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