Nach Inspiration von:
https://tutorials-raspberrypi.de/raspberry-pi-ssl-zertifikat-kostenlos-mit-lets-encrypt-erstellen/
https://www.itzgeek.com/how-tos/linux/how-to-configure-lets-encrypt-ssl-in-lighttpd-server.html
Vor der Installation wie üblich die Repositories und die installierte Software aktualisieren
sudo apt-get update sudo apt-get upgrade
Als erstes gilt es CERTBOT aus dem Repository zu installieren:
sudo apt-get install certbot
Nach erfolgter Installation muss, damit die Zertifikaterstellung möglich ist, der Webserver unter dem bei der Zertifikatserstellung angegebenen vollständigen Domainnamen (FQDN) aus dem Internet via HTTP (Port 80) erreichbar sein, da für die Validierung unter dieser Adresse der Zugriff auf eine Referenzdatei möglich sein muss. Ggf. sind dazu Anpassungen an der Konfiguration des Webservers sowie eine Port-Weiterleitung beim Internetzugang erforderlich. Ist all das vorbereitet, erfolgt die Zertifikatserstellung mit dem Befehl
certbot certonly --webroot -w /var/www/html/ -d YOURFQDN --redirect -m YOURMAILADDRESS
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate IMPORTANT NOTES: Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/YOURFQDN/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/YOURFQDN/privkey.pem Your cert will expire on 2020-08-31. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew all of your certificates, run "certbot renew" If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Für die Verwendung mit lighttpd müssen das Zertifikat und der private Schlüssel in einer Datei zusammengefasst werden.
cat /etc/letsencrypt/live/YOURFQDN/cert.pem /etc/letsencrypt/live/YOURFQDN/privkey.pem > /etc/letsencrypt/live/YOURFQDN/web.pem
Um das Zertifikat zu Verwenden, ist die Konfiguration von lighthttpd anzupassen.
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/YOURFQDN/web.pem" # Combined Certificate ssl.ca-file = "/etc/letsencrypt/live/YOURFQDN/chain.pem" # Root CA server.name = "YOURFQDN" # Domain Name OR Virtual Host Name server.document-root = "/var/www/html" # Document Root server.errorlog = "/var/log/lighttpd/YOURFQDN_error.log" accesslog.filename = "/var/log/lighttpd/YOURFQDN_access.log" }
Das Zertifikat gilt 90 Tage, muss also rechtzeitig erneuert werden.
Dies geht relativ einfach, sollte aber, damit es nicht vergessen wird, einem CRON-Job übertragen werden.
Um zu prüfen, ob dieser fehlerfrei ablaufen würde, prüft man das zunächst:
certbot renew --webroot -w /var/www/html/
--dry-run
Wenn der Trockenlauf fehlerfrei erfolgte, können die beiden folgenden Befehle in die CRONTAB eingetragen werden. Der Editor wird aufgerufen mit:
sudo crontab -e
# For more information see the manual pages of crontab(5) and cron(8) # m h dom mon dow command 5 4 1 */2 * certbot renew --webroot -w /var/www/html/ 7 4 1 */2 * cat /etc/letsencrypt/live/YOURFQDN/cert.pem /etc/letsencrypt/live/YOURFQDN/privkey.pem > /etc/letsencrypt/live/YOURFQDN/web.pem