#!/bin/bash
#set -x
LANG=c;
umask 077;
# Diesen Pfad anpassen (enthält Link zur aktuellen Datei "chain[0-9]{1,}.pem")
chainDir='/etc/letsencrypt/live/home.fastix.org';
# Dieser Wert wird von Let's encrypt bestimmt: Gültigkeit des Zertifikates in Tagen
Days=90;
# Anpassen: Renew n Tage vor Ablauf: (laut Let's Encrypt: maximal 30 Tage)
DaysBevore=10;
# Anpassen: Tag für Systemlog:
logTag="Zertifikat_erneuern";
DaysU=$(($Days*86400)); # in Sekunden seit 1.1.1970
DaysBevoreU=$(($DaysBevore*86400)); # dto.
MinTime=$(($DaysU-DaysBevoreU)); #
dFile=$(stat -c %Y -L ${chainDir}/chain.pem)
dTest=$(($dFile+$MinTime));
dNow=$(date +%s);
if [ $dTest -gt $dNow ]; then
rest=$(($dFile+$Days*86400));
rest=$(($rest-$dNow));
rest=$(($rest/86400));
errMsg="Das Zertifikat ist noch ${rest} Tage gültig: Exit";
logger -t "${logTag}" "${errMsg}";
echo "${errMsg}";
exit 1;
fi
# Einstellungen, Tempdir
tmpdir=$(mktemp -d);
outfile="${tmpdir}/output.txt";
# GGF: Aufheben der Sperren in iptables;
# Eigentliches Erneuern der Zertifikate:
/usr/bin/certbot renew 1> "${outfile}" 2>&1;
err=$?;
if [ 0 -eq $err ]; then
logger -t "${logTag}" "Das Zertifikat wurde erneuert.";
else
logger -t "${logTag}" "Fehler: Das Zertifikat wurde nicht erneuert. ( Fehler: ${err} )";
cat "${outfile}" | logger -t "${logTag}";
fi
/usr/bin/mail -s "home.fastix.org: Zertifikat erneuern" joerg.reinholz@googlemail.com < "${outfile}";
# GGF: Wiederherstellung der Sperren in IP-Tables
# Löschen des temporären Verzeichnisses:
rm -rf "${tmpdir}";