| FOTO | AUTO | EDV | AUDIO |

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