Erneuert ist nicht ausgeliefert

Ausgangslage

Nach dem Umbau zeigten die Certbot-Hooks auf einen Container, den es nicht mehr gab. Ich stellte sie auf Traefik um, und der Dry-Run bestand. Am 20.9. erneuerte der Cronjob beide Zertifikate automatisch, und die neuen Dateien lagen auf der Platte. Damit sah alles erledigt aus.

Entscheidung

Die Hooks stoppen nur Traefik, denn dort liegt der Port-80-Konflikt. Das Zertifikat liefert aber der nginx-Container aus, und der liest es nur beim Start ein. Deshalb zieht ein Deploy-Hook die beiden Container nach jeder echten Erneuerung nach. Gedacht war ein Reload, geworden ist ein Neustart. Er fällt in die Pause, in der Traefik während der Erneuerung ohnehin steht, und verlängert sie nur um die Dauer des Neustarts, in einer Einzelmessung rund 0,7 Sekunden für beide Container, ohne die Zeit, die nginx zum Beenden braucht.

Umsetzung

Am 30.9. zeigte ein Blick auf die ausgelieferten Ablaufdaten mit openssl s_client gegen den Edge-Router bei odabas.ch den Dezember, bei waverider52.com noch den Oktober. Die Datei war erneuert, ausgeliefert wurde sie nicht. Der Reload von nginx-waverider brach die TLS-Verbindungen rund 20 Minuten lang ab, ein Neustart behob es. Warum der Reload das Problem auslöste, weiss ich nicht, die Ursache ist offen. Der Hook liegt als Skript im Deploy-Ordner von Certbot. Deploy-Hooks laufen im Dry-Run nur mit --run-deploy-hooks, ein gewöhnlicher Dry-Run übergeht sie also stillschweigend. Scheitert der Neustart selbst, steht das nur im Certbot-Log und im Cron-Log. Das Hook-Skript endet trotzdem mit Exit-Code 0, der Cronjob meldet Erfolg, es kommt keine Mail, und die Seite bliebe nach der Erneuerung unerreichbar — aufgefallen wäre das erst bei der Prüfung am Dienst, die ohnehin ansteht.

Erkenntnis

Ein bestandener Dry-Run beweist nicht, dass das erneuerte Zertifikat auch ausgeliefert wird. Geprüft wird am laufenden Dienst, nicht an der Datei. Und auch ein harmlos wirkender Reload an einem produktiven Dienst braucht einen Rückweg. Der Ende-zu-Ende-Nachweis steht noch aus: Er kommt mit der nächsten echten Erneuerung im November.