So sieht die Meldung aus
Failed to renew certificate cloud.example.com with error: Some challenges have failed.
All renewals failed. The following certificates could not be renewed:
/etc/letsencrypt/live/cloud.example.com/fullchain.pem (failure)Häufige Ursachen
- Die Erneuerungsdatei nutzt
authenticator = standalone, aber nginx oder Apache belegt schon Port 80. - Der Webroot-Pfad oder der Webserver hat sich geändert, die Challenge-Datei ist unter der Domain nicht mehr erreichbar.
- Der Erneuerungs-Timer oder Cron-Job läuft nicht, daher wird nie erneuert.
- Ein
pre-,post- oderdeploy-Hook schlägt fehl, z. B. das Neuladen eines Dienstes, den es nicht mehr gibt. - DNS, Firewall oder ein IPv6-Eintrag führen für die Domain nicht mehr zu diesem Server.
Prüfen
- Welche Zertifikate gibt es, und wann laufen sie ab?
sudo certbot certificates - Die ganze Erneuerung testen, ohne etwas zu ändern
sudo certbot renew --dry-run - Ist ein Erneuerungs-Timer geplant?
systemctl list-timers | grep -i certbot - Was sagt das Log?
sudo tail -n 40 /var/log/letsencrypt/letsencrypt.log
Lösung
sudo certbot renew --dry-runausführen und den ersten Fehler lesen. Der Test nutzt den Staging-Server, ist also sicher und verbraucht keine Produktiv-Limits.- Heißt es, der Port sei belegt, die Methode wechseln:
sudo certbot certonly --nginx --cert-name cloud.example.com -d cloud.example.com(oder--apachebzw.--webroot -w /var/www/html). Das schreibt die Erneuerungsdatei neu. - Den Timer aktivieren:
sudo systemctl enable --now certbot.timer. Beim Snap-Paket heißt ersnap.certbot.renew.timer. - Fehlerhafte Hooks in
/etc/letsencrypt/renewal-hooks/reparieren oder entfernen und einendeploy-Hook wiesystemctl reload nginxnutzen, damit das neue Zertifikat geladen wird. - Den Dry-Run wiederholen, bis er mit Erfolg endet, dann das neue Ablaufdatum mit
sudo certbot certificatesprüfen.
Häufige Fragen
Ist --force-renewal die Lösung?
Selten. Es behebt die Ursache nicht, und jede erzwungene Ausstellung zählt auf die Rate-Limits. Erst den fehlerhaften Schritt beheben, den der Dry-Run zeigt.
Die Erneuerung lief, aber der Browser zeigt noch das alte Zertifikat. Warum?
Der Webserver lädt das Zertifikat nur beim Start oder Neuladen. Einen Deploy-Hook zum Neuladen ergänzen oder einmal von Hand neu laden.