Tags: letsencrypt, encryption, devops
Letsencrypt Zertifikate sind nur für 90 Tage gültig. Daher ist eine automatisierte Erneuerung, z.B. via Cron wünschenswert. Das folgende Skript
überprüft die Gültigkeit auf mindestens 30 Tage und ob alle Domains im Zertifikat inkludiert sind:
#!/bin/bash
FIRST_CERT=$1
for DOMAIN in "$@"
do
openssl x509 -in /etc/letsencrypt/live/$1/cert.pem -noout -text | grep DNS:${DOMAIN} > /dev/null || exit 1
done
CERT=$(date -d "$(openssl x509 -in /etc/letsencrypt/live/$1/cert.pem -enddate -noout | cut -d'=' -f2)" "+%s")
CURRENT=$(date "+%s")
REMAINING=$((($CERT - $CURRENT) / 60 / 60 / 24))
[ "$REMAINING" -gt "30" ] || exit 1
echo Domains $@ are in cert and cert is valid for $REMAINING days
Neben openssl wird nur die bash benötigt und das Skript kann in einem Cronjob / der Crontab wie folgt verwendet werden:
6 20 * * * /usr/local/bin/check_letsencrypt_cert.sh domain.de www.domain.de > /dev/null ||/opt/letsencrypt/letsencrypt-auto -d domain.de -d www.domain.de certonly
Eine vollständige Lösung um letsencrypt mit salt aufzusetzen findet ihr in meiner letsencrypt-formula.