Anleitung zur Umstellung auf Let’s Encrypt Zertifikat (Ubuntu 14.04 LTS)

| 6 Kommentare

Verschlüsselung ist heute wieder zurecht Trend-Thema. Apple und das FBI streiten sich darüber, ob Apple die Verschlüsselung des Iphones schwächen soll, um so dem FBI und wahrscheinlich auch anderen staatlichen Organen einfacher Zugriff auf die Daten auf dem Mobilgerät zu ermöglichen. Google bevorzugt in seiner Suche Seiten, die über HTTPS übertragen und damit verschlüsselt sind. Die meisten Leute haben erkannt, dass es bei den Auseinandersetzungen schlussendlich um ihre Freiheiten geht und die Fragen: Kann jemand drittes verfolgen, was ich auf einer Seite tue und welche Informationen zwischen mir und der Seite ausgetauscht werden? Kann jemand die Daten und Informationen auf dem Weg zu mir verändern?



Damit genau dieses nicht passiert, ist auch scroom.de nur per HTTPS erreichbar. Um dies zu erreichen, muss auf dem Server ein Zertifikat vorhanden sein, welches wenn man bei den Nutzern Fehlermeldungen vermeiden möchte, von einer Zertifizierungsstelle geprüft und genehmigt worden ist. Bisher hatte ich dies mit einem Zertifikat von StartCom gelöst, die es schon seit mehreren Jahren kostenlos gab. In wenigen Tagen sollte mein altes Zertifikat auslaufen, so dass ich ein neues Zertifikat hätte erstellen müssen und auf dem Server installieren müssen. Da also sowieso ein wenig Arbeit anstand, habe ich mich dazu entschieden direkt einen Wechsel zu Let’s Enrypt durchzuführen.
Let’s Encrypt ging aus einem Projekt der Electronic Frontier Foundation, der University of Michigan und einem unabhängigen Projekt von Mozilla hervor und hat sich zum Ziel gesetzt den bisher recht komplexen Prozess der Erstellung, Validierung, Signierung, Einrichtung und Erneuerung von Zertifikaten für verschlüsselte Websites zu vereinfachen und zu automatisieren. Die verwendete Software ist quelloffen und wie auch die Zertifikate kostenlos.
Doch nun zur konkreten Einrichtung auf meinem Server (Ubuntu 14.04 LTS, Webserver Apache), bei der zunächst einem Artikel DigitalOcean Community gefolgt bin:
Zunächst muss, wenn noch nicht geschehen git installiert werden:

sudo apt-get update && sudo apt-get install git

Anschließend wird der Let’s Encrypt Client aus dem Git Repository geholt und in ein eigenes Verzeichnis unter /opt gelegt:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Das erstellte Verzeichnis anschließend betreten:

cd /opt/letsencrypt

Anschließend automatisiert das Zertifikat erstellen, validieren, signieren und einrichten per

./letsencrypt-auto --apache -d example.com -d www.example.com

Zu beachten ist, dass die erste Domain, die angegeben wird, die Basis-Domain ist (in diesem Beispiel example.com) und dass weitere Subdomains angegeben werden können, für die das Zertifikat gelten soll.
Nachdem der Client die benötigten Abhängigkeiten installiert hat, wird man bei der Einrichtung nach einigen Daten gefragt. Unbedingt benötigt wird eine Email-Adresse. Außerdem kann man sich entscheiden, ob der komplette Verkehr über HTTPS abgewickelt werden soll, oder ob weiterhin auch HTTP-Verbindungen möglich sein sollen. Ich würde ersteres empfehlen, also die komplette Verschlüsselung.
Nachdem das Skript durchgelaufen ist, war/ist auch bereits alles fertig eingerichtet, so dass der Status des Zertifikats überprüft werden kann (Natürlich wieder example.com ersetzen durch den eigenen Domain-Namen):

https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Wer, wie ich noch einen eigenen Mailserver betreibt, der sollte die gerade erstellten Zertifikate noch Postfix und Dovecot bekannt machen.

Die Dovecot-Konfiguration öffnen:

sudo nano /etc/dovecot/dovecot.conf

und dort die Einträge ssl-cert und ssl-key suchen und nach folgendem Schema anpassen:

ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem

Für die Änderung der Postfix-Konfiguration können Befehle nach folgendem Schema verwendet werden:

sudo postconf -e smtpd_tls_cert_file='/etc/letsencrypt/live/example.com/cert.pem'

sudo postconf -e smtpd_tls_key_file='/etc/letsencrypt/live/example.com/privkey.pem'

sudo postconf -e smtpd_tls_CAfile='/etc/letsencrypt/live/example.com/chain.pem'

Abschließend Postfix und Dovecot einmal neu starten:

sudo service dovecot restart && sudo service postfix restart

Nun sollte Zertifikat auch bei diesen beiden geladen sein.

Um sich für die kommenden Monate die Arbeit zu erleichtern, kann abschließend noch die Erneuerung des Zertifikats automatisieren, was sinnvoll ist, da die von Let’s Encrypt ausgestellten Zertifikate nur 90 Tage gültig sind. Let’s Envcrypt empfiehlt sogar die Erneuerung nach 60 Tagen. Zertifikate, die jünger als die 60 Tage sind, werden nicht automatisch erneuert.

Angestoßen wird der Check nach Erneuerung über

./letsencrypt-auto renew

Das das Zertifikat gerade erst erstellt wurde, erneuert der Client das Zertifikat nicht. Diese Überprüfung sollte abschließend noch als Cronjob eingetragen werde und somit regelmäßig ausgeführt werden. Hierzu den crontab öffnen:

sudo crontab -e

und folgendes eintragen:

#Woechentliche Aktualisierung des Zertifikats von Lets Encrypt
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Abschließend speichern und den crontab verlassen. Das Aktualisierungs-Skript wird nun jeden Montag um 2:30 Uhr ausgeführt. Außerdem wird eine Logdatei geschrieben, so dass nachvollzogen werden kann, was der Client gemacht hat.

Ich muss wirklich sagen, dass ich begeistert bin, wie einfach und schnell die Einrichtung des Let’s Ecrypt Zertifikats im Vergleich zu der Einrichtung von klassischen Zertifikaten ist. Durch die Automatisierung laufen alle zukünftigen zudem noch ohne mein Zutun. Einfach nur toll!

Autor: Alexander Kallenbach

Mein Name ist Alexander Kallenbach. Ich schreibe hier auf Scroom über alles mögliche – vor allem aber über IT. Hierbei interessieren mich besonders freie und/oder quelloffene Software sowie deren Entwicklung und Einsatz. Außerdem interessieren mich Auswirkungen von IT auf unser Leben. Hierbei ist die Nutzung von Daten und somit auch Datenschutz ein Themenbereich.

6 Kommentare

  1. Hallo Hr. Kallenbach,

    mit Interesse habe ich Ihren Artikel hier gelesen. Soweit mir bekannt ist, „friemeln“ die Scripts in der Apache-Configuration herum. Können Sie das bestätigen?
    Ich habe es leider noch nicht selbst testen können, da ich mir meine Apache-Config nicht kaputt machen lassen wollte…

  2. Vielen Dank für Ihre Mühe und Ihre Antwort.

    Da muss ich mal schauen, und es bei Gelegenheit mal testen. Ich hatte gehofft, wenigstens eine Halbautomatische Lösung hinbekommen zu können…

    Zertifikat auch automatisiert mit dem Script erzeugen und am richtigen Ort mit vorgebenem Namen ablegen und dann den VHost selbst anpassen zu können.

    Danke und Viele Grüße
    A. Birndt

  3. Eine sehr hilfreiche Anleitung. Hat wunderbar funktioniert. Vielen Dank!

Schreibe einen Kommentar zu Axel Birndt Antworten abbrechen

Pflichtfelder sind mit * markiert.