Let's encrypt Zertifikate
Seit dem 03. Dezember 2015 kann man kostenlos bei letsencrypt.org Zertifkate erzeugen. Diese sind 3 Monate gültig, lassen sich aber automatisch erneuern. Die Zertifikate werden von den Browsern akzeptiert, im Gegensatz zu den selbst erstellten Zertifikaten. Daher sollte man seine Webseiten unbedingt auf https umstellen, dies wird auch von den Suchmaschinen honoriert.
Einrichtung der Software
Letsencrypt.org bietet eine Softwaresammlung an, die das Erzeugen und Einrichten der Zertifikate vereinfacht. Ich gebe hier die notwendigen Schritte an, um den Webserver auf Verschlüsselung umzustellen. Zuerst besorgt man sich mittels git die Software, und erzeugt für eine oder mehrere Domains die entsprechenden Zertifikate.
git clone https://github.com/letsencrypt/letsencrypt
Der Befehl erzeugt ein Verzeichnis letsencrypt und richtet dort die aktuelle Software ein. Hat man diese längere Zeit nicht benutzt, so kann diese einfach aktualisiert werden.
cd letsencrypt
git pull
Um ein Zertifikat zu erstellen, wechselt man in das letsencrypt Verzeichnis und startet ein Skript. Hinter dem Parameter -d wird eine Domain erwartet. Ich erstelle ein Zertifikat für die Domain mit und ohne www.
./letsencrypt-auto certonly --apache --rsa-key-size 4096 -d www.planet-laas.de -d planet-laas.de
Die Zertifikate werden unter /etc/letsencrypt/live/<domain>/ abgelegt. Mit openssl lassen sich die Daten in Textform anzeigen.
openssl x509 -in /etc/letsencrypt/live/www.planet-laas.de/cert.pem -noout -text
Anpassen des Webservers apache2
Nachdem das Zertifikat erstellt ist, muss dem Webserver dies noch mitgeteilt werden. Ich empfehle außerdem, per Weiterleitung alles auf die HTTPS-Variante umzuleiten. Beispielhaft gebe ich meine Konfiguration für eine Domain an. Hierbei wird das Zertifikat für die Domain mit und ohne www.-Präfix verwendet. Aliase oder *-Zertifikate sind leider noch nicht möglich.
<VirtualHost *:80>
ServerName www.planet-laas.de
ServerAlias *.planet-laas.de
ServerAlias planet-laas.de
Redirect permanent / https://www.planet-laas.de/
CustomLog /var/log/apache2/access_planet-laas.de.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName planet-laas.de
ServerAdmin webmaster@planet-laas.de
CustomLog /var/log/apache2/access_ssl_planet-laas.de.log combined
Redirect permanent / https://www.planet-laas.de/
SSLCertificateFile /etc/letsencrypt/live/www.planet-laas.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.planet-laas.de/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.planet-laas.de/fullchain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/htdocs/
ServerName www.planet-laas.de
ServerAdmin webmaster@planet-laas.de
CustomLog /var/log/apache2/access_ssl_planet-laas.de.log combined
SSLCertificateFile /etc/letsencrypt/live/www.planet-laas.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.planet-laas.de/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.planet-laas.de/fullchain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Automatische Erneuerung der Zertifikate
Die Zertifikate von letsencrypt.org haben eine Gültigkeitsdauer von 3 Monaten. Daher müssen diese regelmäßig erneuert werden. Ein einfacher Eintrag in der crontab erledigt die Aufgabe automatisch. In dem Beispiel werden die Zertifikate zum Ersten eines jeden Monats aktualisiert, wenn nötig.
# m h dom mon dow command
0 0 1 * * cd /root/letsencrypt; ./letsencrypt-auto renew
Umstellung auf certbot
Im Mai 2016 hat letsencrypt seinen neuen Client certbot eingeführt. Auf den ersten Blick ändert sich nur der Name, gefühlt ist das neue Programm aber deutlich schneller. Einige Änderungen sind dabei zu beachten. Zuerst holt man sich mittels git die aktuelle Programmversion.
git clone https://github.com/certbot/certbot
Die Parameter haben sich nicht geändert, die Erstellung der Zertifikate erfolgt wie mit dem letsencrypt-Tool. Daher führe ich hier nur den Eintrag zur automatischen Aktualisierung auf.
# m h dom mon dow command
0 0 1 * * cd /root/certbot; ./certbot-auto renew