diff --git a/scripts/70-nginx.sh b/scripts/70-nginx.sh index 72424cc..b52f8f5 100644 --- a/scripts/70-nginx.sh +++ b/scripts/70-nginx.sh @@ -205,20 +205,41 @@ build_site_acme_only(){ local host="$1" outfile="$2" cat > "$outfile" < "${ACME_WEBROOT}/.well-known/acme-challenge/_probe" + curl -fsS --max-time 5 -4 "http://${host}/.well-known/acme-challenge/_probe" >/dev/null \ + || curl -fsS --max-time 5 -6 "http://${host}/.well-known/acme-challenge/_probe" >/dev/null } issue() { local host="$1" echo "[i] Versuche LE für ${host} …" - if ! resolve_ok "$host"; then - echo "[!] DNS zeigt (noch) nicht auf diese IP – überspringe: ${host}" - return 0 + resolve_ok "$host" || { echo "[!] DNS zeigt (noch) nicht hierher – skip ${host}"; return 0; } + + if ! probe_http "$host"; then + echo "[!] ACME-HTTP-Check für ${host} fehlgeschlagen (Port 80/IPv6/Firewall/Nginx prüfen)." fi - # Für MX den Schlüssel beibehalten, damit TLSA (3 1 1) stabil bleibt + # MX: Key beibehalten (TLSA 3 1 1 bleibt stabil) EXTRA_ARGS=() - if [[ "$host" == "$MAIL_HOSTNAME" ]]; then - EXTRA_ARGS+=(--reuse-key) - fi + [[ "$host" == "$MAIL_HOSTNAME" ]] && EXTRA_ARGS+=(--reuse-key) certbot certonly --agree-tos -m "${LE_EMAIL:-admin@${BASE_DOMAIN}}" \ --non-interactive --webroot -w "$ACME_WEBROOT" -d "$host" \ - "${EXTRA_ARGS[@]}" || true + "${EXTRA_ARGS[@]}" "${CERTBOT_EXTRA[@]}" || true } if [[ "$BASE_DOMAIN" != "example.com" ]]; then @@ -33,10 +50,9 @@ if [[ "$BASE_DOMAIN" != "example.com" ]]; then issue "$WEBMAIL_HOST" issue "$MAIL_HOSTNAME" - # Nginx neu laden (Symlink-Hook verlinkt die neuen Zerts) systemctl reload nginx || true - # Direkt nach Erst-Ausstellung TLSA für MX einmal erzeugen + # TLSA direkt einmal schreiben (Hook macht es bei Renewals sowieso) MX_CERT="/etc/letsencrypt/live/${MAIL_HOSTNAME}/fullchain.pem" if [[ -s "$MX_CERT" ]]; then HASH="$(openssl x509 -in "$MX_CERT" -noout -pubkey \ @@ -48,5 +64,5 @@ if [[ "$BASE_DOMAIN" != "example.com" ]]; then echo "[TLSA] ${TLSA_LINE}" fi else - echo "[i] BASE_DOMAIN=example.com – LE-Ausstellung wird übersprungen." + echo "[i] BASE_DOMAIN=example.com – LE wird übersprungen." fi \ No newline at end of file