Kostenlose Verschlüsselung dank Let’s Encrypt (letsencrypt.org)

Verschlüsselung ist ein weit verbreitetes Modewort. Verbindungen vom Endanwender bis zur Webseite sollen verschlüsselt und damit abhörsicher(er) eingerichtet werden. Notwendigerweise soll dabei sämtlicher Webtraffic über https stattfinden. Doch dafür benötigt der Webseiten-Betreiber zumindest ein gültiges SSL-Zertifikat.
Sofern er nur eine Hauptdomain betreibt, benötigt er auch nur ein Zertifikat. Je mehr Webseiten jedoch betrieben werden, je mehr Zertifikate braucht ein Betreiber auch in der Regel. Ausnahmen bilden hierbei sogenannte Wildcard-Zertifikate, die beispielsweise auf *.berlindisplay.de ausgestellt sind und damit auch für Subdomains gelten, diese sind jedoch nicht überall erhältlich.

Ein Gültiges SSL-Zertifikat wird im Browser angezeigt.

Webseiten verschlüsselt und mit gültigem Zertifikat auszuliefern, war bisher administrativ aufwändig und teuer. Seit einiger Zeit gibt es immer wieder Berichte zu der kostenlosen Alternative Let’s Encrypt, die aber bisher nicht öffentlich zugänglich war.

Seit dem 3. Dezember ist es nun soweit. Let’s encrypt ist in die Public Beta Phase gegangen und für Jeden frei zugänglich (der einen ssh-Zugriff auf seinem Server hat).
Für unseren Blog haben wir dies gleich einmal ausgetestet.

Installation

How it works beschreibt die Installation gut, zumindest für CentOS7.
$ yum install git
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help

Der letzte Befehl installiert hierbei benötigte Abhängigkeiten. Danach ist die Installation abgeschlossen. Nun muss man nur noch das Zertifikat anforden.
./letsencrypt-auto certonly --standalone -d blog.berlindisplay.de
Verwendet man beispielsweise Domains beispiel.de und www.beispiel.de für seinen Shop fügt man -d weitere Domains hinzu (z.B, ./letsencrypt-auto certonly --standalone -d berlindisplay.de -d www.berlindisplay.de)

Im nachfolgenden Dialog die Email-Adresse eingeben und das wars. Danach sollte das Zertifikat erstellt sein und unter /etc/letsencrypt/live/blog.berlindisplay.de liegen.

Weitere Informationen zum Unternehmen, Adresse usw. sind nicht erforderlich, denn sie werden auch von den anderen Zertifikatstellen nie auf Richtigkeit überprüft. Die Gültigkeitsprüfung erfolgt im standalone Betrieb durch Bindung der IP-Adresse zur Domain. Dies bedeutet, dass die Domain idealerweise auf den Server zeigen sollte, auf der sie das Zertifikat erstellen möchten.

Um das Zertifikat nun einzubinden muss dieses in die Apache/Nginx Config oder ähnliches eingefügt werden. Für Apache sind dies:

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/blog.berlindisplay.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/blog.berlindisplay.de/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/blog.berlindisplay.de/fullchain.pem

Achtung: die Angabe des ChainFiles ist nicht zwingend erforderlich, aber zumindest bei uns, meckerten die mobilen Browser, dass das Zertifikat ungültig sei. Also die letzte Zeile mit angeben.

Installation unter Ubuntu (14.04lts 64Bit)

Leider gestaltete sich die Installation unter Ubuntu nicht ganz so einfach. Der Befehl

./letsencrypt-auto --help

brach immer mit einer roten Fehlermeldung mit gekürztem Inhalt ‚/python2.7/cryptography“ failed with error code 1‘ ab.
Wir mussten hierfür manuell die Python Installation wie folgt aktualisieren.
echo PYTHONVERSION=$(dpkg-query --show --showformat '${Version}\n' python)
sudo dpkg --compare-versions 2.7.5 ge 2.7.9
sudo apt-get update && sudo apt-get upgrade
./letsencrypt-auto --help

Danach kann das Zeritfikat wie beschrieben erstellt werden.