In meinem Homelab habe ich kürzlich festgestellt, wie subtile Netzwerkeinstellungen den Betrieb von Let's Encrypt über einen Nginx-Proxy richtig durcheinanderbringen können. Hier ein kleiner Erfahrungsbericht und worauf man achten sollte.
Problem
Neue Proxy-Hosts auf meinem Nginx-Setup erhielten plötzlich nur noch eine Fehlermeldung „Internal Error“. Gleichzeitig scheiterten die automatischen Zertifikatsupdates von Let's Encrypt. Bis vor ein paar Wochen lief noch alles reibungslos über die Config-Seite.
Erste Idee – Certbot im Standalone-Modus: Ich wollte das Problem isolieren und versuchte, das Zertifikat manuell mit Certbot zu erzeugen:
nginx stoppen
nginx -s quit
Certbot im Standalone-Modus starten
certbot certonly --standalone -d blog.meinsbs.de
Die erste Rückmeldung war jedoch verwirrend:
Could not bind TCP port 80 because it is already in use by another process on this system
Also Nginx gestoppt und noch einmal ausgeführt. Dieses Mal schlug Certbot beim Challenge-Prozess fehl:
Certbot failed to authenticate some domains
Detail: 185.55.73.71: Timeout during connect (likely firewall problem)
Analyse
Der ACME-Challenge-Prozess von Let's Encrypt versucht, über Port 80 auf den Server zuzugreifen. Das Timeout deutet darauf hin, dass die Verbindung von außen blockiert wurde.
WAN-Ports auf der OPNsense geprüft → Port 80 erreichbar.
Livelog der OPNsense während des Certbot-Laufs analysiert → Ursache gefunden: Geoblocking!
Die Ursache
Ich hatte in der OPNsense bestimmte Länder blockiert – unter anderem die USA. Da die Let's Encrypt-Server aus den USA auf meine Domain zugreifen müssen, scheiterte die Validierung. Sobald Geoblocking aktiviert ist, kann Certbot den Challenge-Request von außen nicht mehr erfolgreich beantworten.
Fazit
Wenn der ACME-Challenge „Timeout during connect“ meldet, liegt das nicht immer an falschen Ports oder Firewall-Regeln. In meinem Fall verhinderte Geoblocking den Zugriff.
Lektion für andere Admins
Prüft immer, ob externe Services wie Let's Encrypt durch Geo-Firewalls oder Geoblocking blockiert werden. :D
Temporäres Deaktivieren von Geoblocking kann beim Troubleshooting helfen.
Certbot im Standalone-Modus ist nur dann erfolgreich, wenn Port 80 wirklich von außen erreichbar ist.
Bonus-Tipp
Wenn ihr regelmäßig neue Zertifikate für mehrere Domains erstellt, kann ein temporäres „Whitelist“ der Let's Encrypt IPs in der Firewall deutlich Zeit sparen.