code.fastix.org

Dateiansicht:

Datei:Projekte -> Linux:LetsEncrypt und certbot:Zertifikate auf sinnvolle Weise mit Bash-Skript und Crontab erneuern -> certbot_renew.sh
md5:b04e42aee15578b63d9d379f6748f4c2
sha1:f6457637e85d599f8de235691202e6700544be36
Download-Link:Download
  1. #!/bin/bash
  2. #set -x
  3.  
  4. LANG=c;
  5. umask 077;
  6.  
  7. # Diesen Pfad anpassen (enthält Link zur aktuellen Datei "chain[0-9]{1,}.pem")
  8. chainDir='/etc/letsencrypt/live/home.fastix.org';
  9.  
  10. # Dieser Wert wird von Let's encrypt bestimmt: Gültigkeit des Zertifikates in Tagen
  11. Days=90;
  12.  
  13. # Anpassen: Renew n Tage vor Ablauf: (laut Let's Encrypt: maximal 30 Tage)
  14. DaysBevore=10;
  15.  
  16. # Anpassen: Tag für Systemlog:
  17. logTag="Zertifikat_erneuern";
  18.  
  19. DaysU=$(($Days*86400));                 # in Sekunden seit 1.1.1970
  20. DaysBevoreU=$(($DaysBevore*86400));     # dto.
  21. MinTime=$(($DaysU-DaysBevoreU));        #
  22. dFile=$(stat -c %Y -L ${chainDir}/chain.pem)
  23. dTest=$(($dFile+$MinTime));
  24. dNow=$(date +%s);
  25.  
  26. if [ $dTest -gt $dNow ]; then
  27.         rest=$(($dFile+$Days*86400));
  28.         rest=$(($rest-$dNow));
  29.         rest=$(($rest/86400));
  30.         errMsg="Das Zertifikat ist noch ${rest} Tage gültig: Exit";
  31.         logger -t "${logTag}" "${errMsg}";
  32.         echo "${errMsg}";
  33.         exit 1;
  34. fi
  35.  
  36. # Einstellungen, Tempdir
  37.  
  38. tmpdir=$(mktemp -d);
  39. outfile="${tmpdir}/output.txt";
  40.  
  41. # GGF: Aufheben der Sperren in iptables;
  42.  
  43. # Eigentliches Erneuern der Zertifikate:
  44. /usr/bin/certbot renew 1> "${outfile}" 2>&1;
  45. err=$?;
  46. if [ 0 -eq $err ]; then
  47.         logger -t "${logTag}" "Das Zertifikat wurde erneuert.";
  48. else
  49.         logger -t "${logTag}" "Fehler: Das Zertifikat wurde nicht erneuert. ( Fehler: ${err} )";
  50.         cat "${outfile}" | logger -t "${logTag}";
  51. fi
  52. /usr/bin/mail -s "home.fastix.org: Zertifikat erneuern" joerg.reinholz@googlemail.com < "${outfile}";
  53.  
  54. # GGF: Wiederherstellung der Sperren in IP-Tables
  55.  
  56. # Löschen des temporären Verzeichnisses:
  57. rm -rf "${tmpdir}";
  58.