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.
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.
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
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
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
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