Da letsencrypt demnächst keine Warnungen mehr per E-Mail versendet, dass ein ausgestelltes Zertifikat demnächst abläuft, muss ich meine Seiten nun halt selbst prüfen.
Dafür habe ich mich hiervon inspirieren lassen. Allerdings funktioniert das Skript auf dem Mac nicht, da auf dem Mac der date-Kommandozeilenbefehl leider etwas anders ist. Und ganz so komplex wie in meiner Inspirationsquelle brauche ich es auch wieder nicht...
Verwendung:
certcheck.sh meine.domain.comDie WARNING_DAYS, ab wie vielen Tagen vor Verfall der "Warn-Bereich" im Skript ausgeführt werden soll, können am Anfang des Skriptes frei angepasst werden.
Und was je nachdem passieren soll, wenn WARNING_DAYS unterschritten oder nicht, ob nun nur eine Textausgabe oder eine E-Mail versenden oder gleich die Zertifikate erneuern, überlasse ich jedem selbst ;-)
WARNING_DAYS=7
DOMAIN=$1
CHECK=`echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:"443" 2>&- | openssl x509 -enddate -noout`
DATE_ACTUALLY_SECONDS=$(date +"%s")
DATE_EXPIRE_SECONDS=$(echo "${CHECK}" | grep "notAfter=" |sed 's/^notAfter=//g' | xargs -I{} date -j -f '%b %d %H:%M:%S %Y %Z' {} +%s)
DATE_DIFFERENCE_SECONDS=$((DATE_EXPIRE_SECONDS - DATE_ACTUALLY_SECONDS))
DATE_DIFFERENCE_DAYS=$((DATE_DIFFERENCE_SECONDS/60/60/24))
if [[ "${DATE_DIFFERENCE_DAYS}" -le "${WARNING_DAYS}" && "${DATE_DIFFERENCE_DAYS}" -ge "0" ]]; then
# Warn-Bereich
echo "ACHTUNG: Zertifikat für $DOMAIN läuft in ${DATE_DIFFERENCE_DAYS} Tagen ab."
else
# OK-Bereich
echo "OK: Zertifikat für $DOMAIN ist noch ${DATE_DIFFERENCE_DAYS} Tagen
fi
![]() ![]() ![]() ![]() |
|
Erstellt am: 05.02.2025 | .Kommentieren |