SSL-Zertifikat auf Ablauf prüfen und rechtzeitig gewarnt werden
Ablaufdatum eines Zertifikats im Browser, mit openssl oder curl ablesen und dann täglich überwachen, mit Warnungen 14, 7, 3 und 1 Tag vor Ablauf.
Wann ein SSL-Zertifikat abläuft, finden Sie auf drei Wegen heraus: mit einem Klick auf das Schloss im Browser, mit einem openssl-Befehl oder in der Handshake-Ausgabe von curl. Jeder Weg dauert unter einer Minute und liefert das notAfter-Datum des Zertifikats, das der Server gerade ausliefert. Das ist der einfache Teil. Der schwierige: Zertifikate leben inzwischen 90 Tage, bald 47, und ein Datum vom letzten Quartal sagt nichts über heute. Dieser Leitfaden behandelt zuerst die einmalige Prüfung und dann die tägliche Überwachung, damit eine gescheiterte Verlängerung Sie erreicht, bevor sie Ihre Nutzer erreicht. Es geht um das Zertifikat, nicht um den Domainnamen: Der Ablauf der Domain ist Sache der Registry und hat einen eigenen Kalender.
Das Ablaufdatum im Browser ablesen
Klicken Sie auf das Schloss (oder das Seiteninfo-Symbol) links neben der Adresse. In Chrome öffnen Sie "Verbindung ist sicher" und dann "Zertifikat ist gültig"; in Firefox "Verbindung sicher", "Weitere Informationen" und "Zertifikat anzeigen"; in Safari "Zertifikat einblenden". Der Zertifikatsviewer zeigt einen Gültigkeitszeitraum mit zwei Daten. Das zweite, "Gültig bis" oder "Not after", ist der Ablauf. Der Browser zeigt es in Ihrer Zeitzone, das Zertifikat speichert es aber in UTC: Ein Zertifikat, das "um 01:59 abläuft", kann für einen Nutzer zwei Zeitzonen weiter östlich schon tot sein.
Das reicht, um eine fremde Website zu prüfen oder einem Kollegen zu antworten, der eine Warnung gesehen hat. Für die eigene Infrastruktur reicht es nicht, weil ein Browser immer nur einen Hostnamen zeigt, und nur den, an den Sie gedacht haben.
Mit openssl und curl auf der Kommandozeile prüfen
Der openssl-Befehl, den man kennen sollte
openssl s_client -servername example.com -connect example.com:443 </dev/null 2>/dev/null \
| openssl x509 -noout -dates -issuer -subject
Die Ausgabe enthält notBefore, notAfter, Aussteller und Subject. Lassen Sie -servername stehen: Die Option sendet den Hostnamen im TLS-Handshake (SNI), und ohne sie reicht ein Server, der mehrere Sites hostet, sein Standardzertifikat heraus, das ein anderes sein kann als das der gesuchten Site. Viele Rätsel der Art "bei mir ist das Zertifikat in Ordnung" entstehen durch eine Prüfung ohne SNI.
Einen Schwellenwert im Skript testen
openssl s_client -servername example.com -connect example.com:443 </dev/null 2>/dev/null \
| openssl x509 -noout -checkend 1209600 \
|| echo "example.com läuft in weniger als 14 Tagen ab"
-checkend erwartet Sekunden (hier 14 Tage) und liefert einen Exit-Code ungleich null, wenn das Zertifikat bis dahin abgelaufen sein wird. Genau diesen Exit-Code braucht ein Cronjob oder ein CI-Schritt.
curl und eine lokale Datei
curl -vI https://example.com 2>&1 | grep -iE "expire date|issuer"
curl gibt die Daten des ausgehandelten Zertifikats aus, praktisch auf einer Maschine ohne openssl. Für eine Zertifikatsdatei in der Deployment-Pipeline, noch bevor sie ausgeliefert wird:
openssl x509 -in cert.pem -noout -enddate
Warum eine einmalige Prüfung nicht mehr reicht
Die Laufzeiten von Zertifikaten schrumpfen seit zehn Jahren, und das CA/Browser Forum hat die nächsten Schritte beschlossen.
| Zertifikat | Maximale Laufzeit |
|---|---|
| Let's Encrypt (Standard) | 90 Tage |
| Jedes öffentliche Zertifikat seit März 2026 | 200 Tage |
| Jedes öffentliche Zertifikat ab März 2027 | 100 Tage |
| Jedes öffentliche Zertifikat ab März 2029 | 47 Tage |
Bei 47 Tagen verlängert niemand mehr von Hand. Die Verlängerung ist automatisiert, und Automatisierung scheitert leise: Eine DNS-Challenge bricht nach einem DNS-Umzug, jemand setzt einen CAA-Record, der den Aussteller ausschließt, ein API-Token läuft ab, eine Subdomain überlebt die Person, die dafür zuständig war. Der Cronjob schreibt einen Fehler, den niemand liest, und das alte Zertifikat funktioniert weiter, bis es das eines Tages nicht mehr tut. Der Leitfaden zu gescheiterten Let's-Encrypt-Verlängerungen listet die Ursachen, der zu den Folgen eines abgelaufenen Zertifikats den Schaden. Der Punkt hier ist einfacher: Bei kurzen Zertifikaten überwacht man die Verlängerung, und der einzige verlässliche Zeuge ist das von außen ausgelieferte Zertifikat.
Das Ablaufdatum mit Domain Sentinel überwachen
Fügen Sie die Domain Ihrer Watchlist hinzu und aktivieren Sie die TLS-Zertifikatsüberwachung. Lassen Sie den Hostnamen leer, um die Domain selbst zu prüfen, oder tragen Sie www oder api ein, wenn HTTPS dort ausgeliefert wird. Von da an verbindet sich Domain Sentinel täglich mit diesem Host, liest das Zertifikat wie ein Browser und speichert einen Snapshot, sobald sich etwas ändert: Aussteller, Daten, Fingerabdruck. Sie bekommen 14, 7, 3 und 1 Tag vor Ablauf eine E-Mail und bei der nächsten Prüfung einen Alarm, wenn das Zertifikat abgelaufen, selbstsigniert oder für einen anderen Namen ausgestellt ist oder von einem anderen Aussteller stammt als zuvor. Ein Button "Jetzt prüfen" startet dieselbe Prüfung auf Abruf.
Die Grenzen, klar benannt: ein Hostname pro überwachter Domain, keine automatische Erkennung Ihrer Subdomains und keine Verlängerung an Ihrer Stelle. Das Inventar Ihrer öffentlichen Hostnamen (Site, www, api, mail) erstellen Sie selbst, der Leitfaden zur Überwachung der Certificate-Transparency-Logs zeigt wie, und tragen jeden einzeln ein. Uptime-Monitoring ist es auch nicht: Gelesen wird das Zertifikat, nicht geprüft, ob die Seite lädt, ein Unterschied, den der Vergleich von DNS-Monitoring und Uptime-Monitoring erklärt.
Was die Schwellenwerte für Ihre Zertifikate bedeuten
Die Schwellenwerte liegen fest bei 14, 7, 3 und 1 Tag, und dass es keine 30-Tage-Warnung gibt, ist Absicht. Let's Encrypt verlängert ein 90-Tage-Zertifikat, wenn noch 30 Tage übrig sind: Eine Warnung bei 30 Tagen würde in jedem gesunden Zyklus auslösen und Sie darauf trainieren, sie zu ignorieren. Vierzehn Tage heißt, die fällige Verlängerung hat nicht stattgefunden, und Sie haben noch zwei Wochen.
| Ihr Zertifikat | So lesen Sie die Alarme |
|---|---|
| Ein-Jahres-Zertifikat, manuell verlängert | 14 Tage sind bequem für eine manuelle Verlängerung; die 7-Tage-Warnung ist dringend |
| 90-Tage-Zertifikat, automatisiert | Jeder Alarm heißt, die Automatisierung ist kaputt; der Alarm bei Ausstellerwechsel bestätigt, dass eine Verlängerung tatsächlich stattgefunden hat |
| 47-Tage-Zertifikat | Gleiche Logik mit weniger Spielraum: Prüfen Sie den Verlängerungsjob am Tag der 14-Tage-Warnung |
Jetzt erledigen
Führen Sie den openssl-Befehl gegen Ihren Haupt-Hostnamen aus und lesen Sie notAfter. Listen Sie jeden Hostnamen auf, der HTTPS ausliefert, auch die vergessenen, und nehmen Sie jeden mit aktivierter TLS-Überwachung in eine Watchlist auf. Dann hören Sie auf, Daten von Hand zu prüfen: Bei 90-Tage-Zertifikaten ist nicht der Kalender zu überwachen, sondern die Verlängerung.
Fangen Sie mit einer Domain an, die Ihnen wichtig ist
Prüfen Sie die Domain kostenlos. Für Benachrichtigungen bei Statusänderung oder Ablauf genügt ein Konto. Dauert keine 30 Sekunden.