Die von Let’s Encrypt kostenlos erhältlichen Zertifikate sind aktuell 90 Tage gültig. Bei vielen Zertifikaten, so z.B. bei vielen Subdomains mit eigenen Zertifikaten, fällt der Überblick schwer, wann welches Zertifikat in Kürze abläuft und erneuert werden muss. Eine automatische Erinnerung muss her.
Eine Methode, um automatisiert alle Zertifikate auf ihren bevorstehenden Ablauf zu testen, kann mit dem folgenden Bash-Script realisiert werden.
Die Zerifikate werden von Let’s Encrypt im Verzeichnis “/etc/letsencrypt/live//cert.pem” abgelegt. Das Script wertet mit Hilfe von OpenSSL das Gültigkeitsdatum jedes unter diesem Pfad gefundenen Zertifikats aus und gibt bei Überschreitung einer eingestellten Vorwarnzeit eine Meldung aus. Wenn das Script per Cron automatisch ein Mal am Tag ausgeführt wird, erhält man vor dem Zertifikatablauf eine entsprechende Mail.
#!/bin/bash
DATADIR=/etc/letsencrypt
OPENSSL=/usr/bin/openssl
DATE=/bin/date
WARNSEC=$((7*24*60*60))
if [ ! -x $OPENSSL ]; then
echo OpenSSL nicht gefunden!
exit 1
fi
if [ ! -x $DATE ]; then
echo Date nicht gefunden!?
exit 1
fi
for cert in $DATADIR/live/*/cert.pem; do
info=$($OPENSSL x509 -in $cert -noout -subject -enddate -checkend $WARNSEC) ||
echo Folgendes Zerifikat läuft bald ab: $info
done
exit 0
Update vom 05.02.2016: Überarbeitetes Script nach einem Hinweis aus den Kommentaren. Danke an Lutz und Michael!
Bei WARNSEC kann eingestellt werden, wie viele Tage vorher eine E-Mail als Erinnerung ausgegeben werden soll. openssl erwartet eine Angabe in Sekunden. Deshalb wird hier sofort umgerechnet.
Das obige Script speichert man z.B unter “/usr/local/bin/letsencrypt_checkcerts” und erstellt anschließend einen Eintrag für Cron, der das Script ein Mal am Tag aufruft.
Schon ist man sicher, keinen Zertifikatsablauf mehr zu verpassen.