Raketenskriptfix: WIKI - Zertifikat ist verschimmelt

Beitrag lesen

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}";