TLS-Zertifikate automatisieren, bevor die kurzen Laufzeiten dich einholen
Mit sinkenden Laufzeiten ist manuelle Zertifikatsverwaltung endgültig erledigt. Wer ACME nicht automatisiert, tauscht künftig alle paar Wochen von Hand, und genau dabei passieren die Ausfälle.
Warum manuelles Zertifikatsmanagement gerade kippt
Solange ein Zertifikat ein Jahr oder länger galt, war der Kalendereintrag ein akzeptables Verfahren. Jemand hat einmal im Jahr einen CSR erzeugt, die Datei per Ticket bei der CA eingereicht, das Ergebnis auf die Webserver kopiert und neu geladen. Mit 200 Tagen wird daraus ein halbjährlicher Pflichttermin, mit 47 Tagen ein Vorgang, der etwa achtmal im Jahr auf jedem betroffenen System ansteht. Bei zwanzig Hostnamen, verteilt auf Reverse Proxies, Mailserver, interne Portale und ein paar Appliances, ist das keine Fleißaufgabe mehr, sondern ein Ausfallrisiko.
In der Praxis scheitert es selten am Ausstellen selbst. Es scheitert daran, dass niemand vollständig weiß, wo überall Zertifikate liegen. Das gleiche Zertifikat steckt in /etc/nginx/ssl, im Java-Keystore der Anwendung, im HAProxy-PEM mit angehängtem Private Key, im Postfix und in der Firmware eines Load Balancers, der sich nur über eine Weboberfläche befüllen lässt. Die Erneuerung läuft dann durch, aber der Dienst hält das alte Zertifikat weiter im Speicher, weil der Reload fehlt.
Typische Fehler sind schnell aufgezählt: certbot renew läuft, aber der deploy-hook wurde nie geschrieben. Die HTTP-01-Challenge bricht, weil ein Redirect von HTTP auf HTTPS auch /.well-known/acme-challenge/ erfasst. Die DNS-01-Challenge scheitert an einem API-Token mit zu weiten Rechten oder an einer zu hohen TTL. Der Cronjob läuft als falscher Benutzer und darf den Private Key nicht lesen. Und das Monitoring meldet den Ablauf erst, wenn die Nutzer schon anrufen.
Der Weg vom manuellen Zertifikat zur automatischen Erneuerung
- 01 Bestand und Ablaufdaten erfassen
- 02 ACME-Client und Challenge festlegen
- 03 Erneuerung per systemd-Timer
- 04 Deploy-Hook mit Reload je Dienst
- 05 Ablauf-Monitoring mit Schwellwert
- 06 Ausrollen über Konfigurationsmanagement
So sieht eine tragfähige Automatisierung aus
Das Ziel ist ein Ablauf, der ohne menschlichen Eingriff funktioniert und trotzdem nachvollziehbar bleibt. Die folgenden Punkte beschreiben die Bausteine, in der Reihenfolge, in der du sie sinnvoll angehst.
Bestand aufnehmen und Verantwortlichkeiten klären
Erfasse jeden Endpunkt mit Hostname, Aussteller, Ablaufdatum, Speicherort und Reload-Kommando. Ein Skript, das mit openssl s_client -connect host:443 und openssl x509 -noout -enddate über eine Liste läuft, liefert dir in einer Stunde mehr Klarheit als jede Wiki-Seite. Trenne dabei sauber zwischen öffentlich vertrauenswürdigen Zertifikaten und internen, denn nur erstere sind von den verkürzten Laufzeiten betroffen.
ACME-Client und Challenge-Typ bewusst wählen
Certbot ist der verbreitetste Client und in allen gängigen Distributionen paketiert, acme.sh kommt als Shell-Skript ohne Python-Abhängigkeiten aus und lässt sich auf Appliances und in schlanken Containern leichter unterbringen. Für einzelne Webserver reicht HTTP-01, für Wildcards und für Systeme ohne Port 80 aus dem Internet brauchst du DNS-01 mit einem Provider-Hook. Wenn deine DNS-Zone das hergibt, ist ein delegierter CNAME auf eine eigene Acme-Zone der sauberste Weg, weil das API-Token dann nur diese eine Zone ändern darf.
Erneuerung über systemd-Timer statt Cron fahren
Der certbot.timer beziehungsweise ein eigener Timer mit RandomizedDelaySec verteilt die Anfragen und vermeidet, dass alle Systeme zur vollen Stunde gleichzeitig bei der CA anklopfen. Persistent=true holt verpasste Läufe nach einem Reboot nach. Mit systemctl list-timers und journalctl -u certbot-renew siehst du jederzeit, wann zuletzt erneuert wurde, und du bekommst über OnFailure eine echte Fehlermeldung statt einer verschluckten Cron-Mail.
Deploy-Hooks schreiben, die den Dienst wirklich neu laden
Ein erneuertes Zertifikat auf der Platte nützt nichts, solange der Prozess das alte im Speicher hält. Hinterlege pro Dienst einen Hook, der die Dateien an den Zielort bringt, Besitzer und Modus setzt und dann nginx -s reload, apachectl graceful oder systemctl reload postfix ausführt. Wichtig ist ein vorgeschalteter Konfigurationstest wie nginx -t, damit ein Fehler nicht erst beim Reload auffällt. Für Java-Anwendungen gehört die Umwandlung in PKCS#12 mit openssl pkcs12 -export in denselben Hook.
Ablauf aktiv überwachen statt auf Mails der CA zu vertrauen
Prüfe die Restlaufzeit an dem Punkt, an dem der Client sie sieht, also über eine TLS-Verbindung zum Endpunkt und nicht über die Datei im Dateisystem. Der check_http-Check von Nagios oder Naemon kann das mit -C, Prometheus liefert es über den Blackbox Exporter als probe_ssl_earliest_cert_expiry, Zabbix bringt einen eigenen Item-Typ mit. Setz die Warnschwelle deutlich vor dem Ablauf, bei 47-Tage-Zertifikaten sind zehn bis vierzehn Tage ein brauchbarer Wert.
Interne CA und Konfigurationsmanagement mitdenken
Für interne Dienste, die nie ein öffentliches Zertifikat brauchen, ist eine eigene CA mit ACME-Schnittstelle wie step-ca oder eine Microsoft-CA mit automatischer Enrollment-Strecke oft der ruhigere Weg. Die Verteilung von Hooks, Timern und Trust-Stores gehört anschließend in Ansible oder ein vergleichbares Werkzeug, damit ein neu ausgerollter Host die Automatisierung von Anfang an mitbringt und nicht nachträglich von Hand nachgerüstet wird.
Kurse zu TLS-Automatisierung mit ACME bei cmt
Diese Kurse vertiefen genau das, an echten Systemen statt nur an Folien. Als Präsenz oder Live-Online, auf Wunsch auch Inhouse für dein Team.
Teste dich und finde deinen Weg
Bevor du einen Kurs buchst, lohnt sich eine ehrliche Standortbestimmung. Die Tests sind kostenlos und ohne Anmeldung.
Passender Lernpfad
Linux Webserver Administrator
In diesem Lernpfad baust du Schritt für Schritt das Know-how auf, um Linux-basierte Webserver sicher, stabil und effizient zu betreiben. Du lernst, wie du typische Webserver-Dienste installierst, konfigurierst und im Alltag zuverlässig administrierst, von der ersten Bereitstellung bis zum laufenden Betrieb. Im Senior Level lernst du das notwendige Wissen was über die reine Webserver Administration hinausgeht.
Grundlagen
Junior Administration
Senior Web Administrator
Häufige Fragen zu TLS-Automatisierung mit ACME
Noch etwas offen? Wir sind ohne Warteschleife für dich da.
Frag uns direktAb wann gelten welche maximalen Laufzeiten für TLS-Zertifikate?
Certbot oder acme.sh, was passt besser?
Wie teste ich, ob die automatische Erneuerung wirklich funktioniert?
Warum schlägt die HTTP-01-Challenge fehl, obwohl der Webserver läuft?
Was mache ich mit Systemen, die keinen ACME-Client unterstützen?
Zuletzt geprüft am 26. Juli 2026.
Verwandte Linux-Themen
Alle Linux-Themen im ÜberblickEchte Stimmen aus unseren IT-Kursen
Qualitativ sehr guter Kurs. Ruhiger und wertschätzender Umgang. Keine Informationsüberlastung.
Erwartungen wurden erfüllt. Angekündigte Themen in hinreichender Tiefe bearbeitet. Zudem gutes Zeitmanagement.
Deine Ansprechpartner
Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.
Norbert Jansen
Beratung & Inhouse
Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.
Zertifikatsautomatisierung im Kurs durchspielen
Wenn du ACME, Deploy-Hooks und Monitoring nicht nebenbei im Produktivbetrieb erarbeiten willst, üben wir das mit dir an laufenden Systemen. In der NGINX Webserver Administration und in Apache Webserver einrichten und administrieren unter Linux richtest du TLS-Terminierung und automatische Erneuerung selbst ein, der Linux Security Intensivkurs ordnet das Ganze in Schlüsselverwaltung, interne CA und Härtung ein. Alle Kurse gibt es als Präsenztermin und Live-Online, auf Wunsch auch als Inhouse-Schulung mit deiner Umgebung als Ausgangspunkt. Melde dich, dann klären wir gemeinsam, welcher Kurs zu deinem Stand passt.