Also hab ich das erstmal weiterlaufen lassen, weil es ging
Ich versuche das erstmals 21 Tage vor dem Ablauf (und dann täglich), lasse mir Mails schicken. Das ist ja dank
sudo dpkg-reconfigure exim4-config
echo "smtp.example.org:admin@example.org:GeHeim#0815" | sudo tee -a /etc/exim4>passwd.client"
recht einfach.
Hier das bash-Skript, welches ich täglich einmal starte:
#!/bin/bash
# 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=21;
# Mailadresse für Fehler und Bestätigungen:
Mail="nobody@example.org";
# Subjekt des Mails:
mailSubject="test.example.org: Zertifikat erneuern"
# Anpassen: Tag für Systemlog:
logTag="Zertifikat_erneuern";
# Anpassen: Automatische Sperren von blocklist in iptables temporär deaktivieren? [yes, no]
stopIptablesBlocklist="no";
###################################################################
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";
# Aufheben der Sperren in iptables:
if [ "yes" = "${stopIptablesBlocklist}" ];
then
iptables-save > "${tmpdir}/iptables.saved";
grep -vP 'BLOCKLIST|-A INPUT -s' < "${tmpdir}/iptables.saved" > "${tmpdir}/iptables.clear";
echo "y" | iptables-apply "${tmpdir}/iptables.clear";
fi
/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 "${mailSubject}" "${Mail}" < "${outfile}";
# Wiederherstellung der Sperren in IP-Tables:
if [ "yes" = "${stopIptablesBlocklist}" ];
then
echo "y" | iptables-apply "${tmpdir}/iptables.saved";
fi
# Löschen des temporären Verzeichnisses:
rm -rf "${tmpdir}";