SSL Zertifikat mit LetsEncrypt (Linux)

Aus Tutorials
Zur Navigation springen Zur Suche springen

Cerbot Client

Installation

sudo mkdir /opt/certbot
cd /opt/certbot
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x certbot-auto
sudo ./certbot-auto

Zertifikate erstellen

sudo /opt/certbot/certbot-auto --apache certonly

Wenn mehr als ein Subdomain ausgewählt wurde, dann wird das Zertifikat mit mehreren Alternative names erstellt.

Zertifikate in Apache integrieren

In der Apache Konfigurationsdatei /etc/apache2/sites-available/<domain>-ssl.conf folgende Zeilen hinzufügen / anpassen:

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<domain>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem

Zertifikate erneuern

Zertifikatserneuerung testen:

sudo /opt/certbot/certbot-auto renew --dry-run

Als CronJob einrichten:

0 9 * * * /opt/certbot/certbot-auto renew --quiet --no-self-upgrade

Skript

Datei öffnen

sudo vi /usr/local/bin/renew_ssl_letsencrypt.sh

und mit folgenden Inhalt befüllen:

#!/bin/bash

/opt/certbot/certbot-auto renew --quiet --no-self-upgrade 2>&1 | tee /home/pi/logs/letsencrypt_today.log >> /home/pi/logs/letsencrypt.log

if [ ${PIPESTATUS[0]} -eq 0 ]
then
echo "Let's encrypt certificate sucessfully updated..." | mail -s "Let's encrypt successfully updated on `date +\"%d.%m.%Y um %H:%M\"`" <mail address>;
else
cat /home/pi/logs/letsencrypt_today.log | mail -s "Let's encrypt update on `date +\"%d.%m.%Y um %H:%M\"` failed" <mail address>;
fi

Obenstehendes Script hat bei mir nur bei manuellen Aufruf funktioniert, jedoch nicht als CronJob. Da auch die Umgebungsvariablen augenscheinlich richtig waren, habe ich folgende Skripte hinzugefügt:


Das erste Skript aktualisiert den Server und startet in danach neu:

sudo vi /usr/local/bin/update_and_restart.sh 
#!/bin/bash

sudo apt-get update && sudo apt-get -y upgrade

sudo shutdown -r now

und das zweite Skript ruft das ursprüngliche Erneuerungsskript über einen Login auf:

sudo vi /usr/local/bin/renew_ssl_letsencrypt.sh
#!/bin/bash

ssh localhost -p 22 -l pi -i /home/pi/.ssh/id_rsa -tt "sudo /usr/local/bin/renew_ssl_letsencrypt.sh" 2>&1 > /dev/null;

Seitdem funkioniert das Erneuern des Zertifikates.

Wildcard-Zertifikate

Siehe Wildcard-Zertifikate

Probleme

CRITICAL:certbot.auth_handler:Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.

https://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210

Links

https://letsencrypt.org/

https://certbot.eff.org/

https://certbot.eff.org/docs/using.html#apache

https://certbot.eff.org/docs/using.html#where-are-my-certificates


Zurück zu LetsEncrypt