Zertifikate
Für den Hausgebrauch empfehle ich die Zertifikate selbst zu erstellen. Leider erscheint dann im Browser die Info das die Zertifikate nicht gültig wären. Selbst ausgestellte Zertifikate sind nicht verifiziert und daher nicht als allgemein sicher eingestuft. Trotzdem funktioniert die Verschlüsselung. Sollen die Zertifikate für einen öffentlichen Webservice verwendet werden, sind verifizierte Zertifikate angebracht.
Lets Encrypt
Der Anbieter Lets Encrypt stellt kostenlose Zertifikate aus. Da diese aber meist nur 90 Tage gültig sind, müsste man jeden Monat neue Zertifikate generieren und die alten wegschmeißen. Diese Arbeit kann entweder mit einen Script via cron automatisiert werden oder man verwendet Cert Bot.
Installation
Siehe: https://certbot.eff.org/lets-encrypt/ubuntuxenial-other
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install certbot
Zertifikate erstellen
sudo certbot certonly --webroot -w /var/WWW/ -d creutz.spdns.de
Es erfolgt dies Meldung:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/creutz.spdns.de/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/creutz.spdns.de/privkey.pem Your cert will expire on 2018-10-09. 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"
Jetzt muss aus den Teilen ein Kombi-Zertifikat erstellt und kopiert werden:
cd /etc/letsencrypt/live/creutz.spdns.de cat cert.pem privkey.pem > /etc/lighttpd/ssl/server.pem
Zertifikat erneuern
Ich erstelle ein Shell-Script
vim /etc/cron.monthly/certbot.sh
mit dem Inhalt:
#!/bin/bash ## Zertifikate für lighttpd erneuern ## zertlocation="/etc/letsencrypt/live/" zertname="/etc/lighttpd/ssl/server.pem" /usr/bin/certbot certonly --webroot -w /var/WWW/ -d creutz.spdns.de cat $zertlocation/cert.pem $certlocation/privkey.pem > $zertname /usr/sbin/Service lighttpd restart
Zertifikate in lighttpd verwenden
- lighttpd sudo service lighttpd stop then run letsencrypt client git clone https://github.com/letsencrypt/letsencrypt && cd letsencrypt ./letsencrypt-auto --agree-dev-preview --server \ https://acme-v01.api.letsencrypt.org/directory auth combine files into ssl.pem sudo su (login as root) cd /etc/letsencrypt/live/yourdomain cat privkey.pem cert.pem
ssl.pem Forward Secrecy & Diffie Hellman Ephemeral Parameters cd /etc/ssl/certs openssl dhparam -out dhparam.pem 4096 Copy and paste the following into /etc/lighttpd/lighttpd.conf dont forget to change yourdomain to your domain or you can put it into /etc/lighttpd/conf-enabled as letsencrypt.yourdomain.conf $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/yourdomain/ssl.pem" ssl.ca-file = "/etc/letsencrypt/live/yourdomain/fullchain.pem" ssl.dh-file = "/etc/ssl/certs/dhparam.pem" ssl.ec-curve = "secp384r1" ssl.honor-cipher-order = "enable" ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH" ssl.use-compression = "disable" setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload", "X-Frame-Options" => "DENY", "X-Content-Type-Options" => "nosniff" ) ssl.use-sslv2 = "disable" ssl.use-sslv3 = "disable" } view rawletsencrypt.yourdomain.conf hosted with ❤ by GitHub now open port and start lighttpd sudo ufw allow 443 sudo service lighttpd start
