Let’s Encrypt

SSL-Zertifikate kostenlos für Websites erstellen

27.04.2016 von Thorsten Eggeling
Mit HTTPS verschlüsselte Webseiten sorgen für mehr Sicherheit bei der Übertragung sensibler Daten. Die dafür nötigen SSL-Zertifikate gibt es jetzt kostenlos.

Für die Verschlüsselung öffentlich zugänglicher Websites benötigen Sie ein SSL-Zertifikat, das der Webbrowser als gültig anerkennt. Bisher war die Beantragung beim Webhoster kompliziert und meist kostenpflichtig. Seit Dezember 2015 bietet jedoch die Initiative Let’s Encrypt, getragen unter anderem von Mozilla, Akamai und Cisco, kostenlose Zertifikate an, die sich ganz einfach abrufen und installieren lassen.

1. SSL-Zertifikat auf dem Server installieren

Wir gehen hier davon aus, dass Sie über einen Apache-Webserver verfügen und eine root-Shell verwenden können. Die Anleitung gilt für Debian, Ubuntu und verwandte Systeme. Einige Webhoster bieten diese Möglichkeit nicht. Sie können dann aber Zertifikate meist über die Konfigurationsoberfläche des Hostingpakets einbinden (-> Punkt 2).

Der Let’s-Encrypt-Client kann Apache so konfigurieren, dass alle Anfragen auf „https://“ umleitet.

Wichtig: Erstellen Sie eine Sicherungskopie des Ordners „/etc/apache2/“. Sollte bei der automatischen Konfiguration etwas schiefgehen, können Sie die Originaldateien schnell wiederherstellen. Für den Download der Let’s-Encrypt-Client-Software benötigen Sie das Versionskontrollsystem git. Sollte es nicht vorhanden sein, führen Sie folgende Befehle auf dem Server aus:

sudo apt-get update
sudo apt-get install git

Außerdem muss auf dem Server Python in der Version 2.6 oder 2.7 installiert sein. Das ist in der Regel standardmäßig der Fall (Python 3.x wird bisher nicht unterstützt). Das Installationsscript prüft die Voraussetzungen und meldet, wenn etwas fehlt. Verwenden Sie dann apt-get, um die nötigen Pakete zu installieren. Starten Sie dann in Ihrem Home-Verzeichnis diesen Befehl:

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

Dabei entsteht das Verzeichnis „letsencrypt“ mit den Installationsscripts. Geben Sie folgende Befehle ein:

cd letsencrypt
./letsencrypt-auto --rsa-key-size 4096

Damit weisen Sie das Script an, für das Zertifikat einen sicheren Schlüssel mit einer Länge von 4096 Bit zu verwenden. Standard ist 2048 Bit. Ein einfaches Menü leitet Sie durch die Konfiguration. Beim ersten Aufruf müssen Sie eine E-Mail-Adresse angeben. Let’s Encrypt verschickt Nachrichten, um Sie über den Ablauf der Gültigkeit von Zertifikaten zu informieren. Im nächsten Schritt wählen Sie die Domain aus, für die Sie das Zertifikat erstellen wollen. Anschließend legen Sie fest, ob alle Anfragen automatisch auf „https://“ umgeleitet werden sollen („Secure“) oder die Site auch über „http://“ erreichbar sein soll („Easy“). Im letzten Schritt erzeugt das Script die Schlüssel für die Zertifikate, prüft die Echtheit und Erreichbarkeit der Domain, lädt die Zertifikatdateien herunter und passt die Apache-Konfiguration an. Schlüssel und Konfigurationsdateien landen unter „/etc/letsencrypt“. Sie können jetzt die Sicherheit der Serverkonfiguration und das SSL-Zertifikat testen.

2. SSL-Zertifikate erneuern

Die Zertifikate sind 90 Tage lang gültig. Es ist empfehlenswert, die Zertifikate etwa nach 60 Tagen zu aktualisieren:

./letsencrypt-auto --rsa-key-size 4096 --agree-tos --keep-untilexpiring -d MeineDomain.de

„MeineDomain.de“ ersetzen Sie durch den tatsächlichen Namen Ihrer Domain. Wenn Sie die Zertifikate erneuern, werden die Schlüssel unter „/etc/letsencrypt/archive“ durchnummeriert und die Links darauf unter „/etc/letsencrypt/live“ aktualisiert. In der Apache-Konfiguration finden Sie nur Pfade zu „/etc/letsencrypt/live/MeinDomain.de“, die dadurch immer gleichbleiben.

Authentifizieren: Vor Ausstellung des Zertifikats will Let’s Encrypt die Domain prüfen.

3. SSL-Zertifikat für andere Rechner erstellen

Wenn Sie keinen Shell-Zugang zum Server haben oder Zertifikate über die Konfigurationsoberfläche des Hostinganbieters installieren wollen, erzeugen Sie die Zertifikate auf einem Ubuntu oder Debian-System zu Hause. Installieren Sie hier git und den Let’s-Encrypt-Client, wie in -> Punkt 1 beschrieben. Geben Sie dann folgenden Befehl in Ihrem Home-Verzeichnis ein:

git clone https://github.com/Myria-de/get-letsencrypt-cert.git

Wechseln Sie in das Verzeichnis „getletsencrypt-cert“ und öffnen Sie die Datei „getcert.sh“ in einem Editor. Passen Sie die Werte der Variablen im Konfigurationsbereich am Anfang der Datei an. Tragen Sie ein gültige Mailadresse ein, damit Let’s Encrypt Sie über abgelaufene Zertifikate informieren kann. Starten Sie dann das Script:

./getcert.sh MeineDomain.de

„MeineDomain.de“ ersetzen Sie durch den Namen der Domain, für die Sie ein Zertifikat erzeugen wollen. Tippen Sie das root-Passwort ein, wenn Sie danach gefragt werden, und bestätigen Sie die Aufzeichnung der IP-Adresse mit „y“. Das Script pausiert danach. Unter der Meldung „Make sure your web server displays the following content at“ sehen Sie eine URL, die auf Ihrem Webserver für die Authentifizierung vorhanden sein muss. Erstellen Sie eine Textdatei, die als Namen die lange ID hinter „acme-challenge/“ erhält. Fügen Sie den Inhalt aus der Zeile unter „before continuing:“ ein, und kopieren Sie die Datei auf Ihren Webserver in das Verzeichnis „.wellknown/acme-challenge“. Probieren Sie im Browser aus, ob die URL das geforderte Ergebnis enthält. Die URL muss über „http://“ erreichbar sein. Eine automatische Umleitung auf „https://“ schalten Sie also vorher ab. Erst danach drücken Sie im Terminalfenster die Eingabetaste.

Die Zertifikate liegen danach in einem Ordner mit dem aktuellen Datum; der private Schlüssel befindet sich unter „certs/MeineDomain.de“. Bei der Konfiguration über ein Web-Front-End müssen Sie in der Regel die Dateien „0001.chain.pem“ („0000_cert.pem“ und „000_chain.pem“ kombiniert) sowie „privkey1.pem“ oder deren Inhalt übertragen. Um das Zertifikat zu erneuern, starten Sie „getcert.sh“ erneut. Das Script prüft, ob das Zertifikat noch 30 Tage gültig ist, und aktualisiert es andernfalls. Der Ablauf ist der gleiche wie beim ersten Aufruf des Scripts.

Heimserver: HTTPS für dynamische IPs

Ein Webserver zu Hause, der über DSL oder Kabelmodem angebunden ist, kann ebenfalls mit SSL-Zertifikaten versorgt werden. Das funktioniert allerdings nur, wenn die externe IP-Adresse des Routers immer gleich bleibt und der Server über einen eigenen Domainnamen erreichbar ist. In der Regel ändert sich die IP-Adresse jedoch täglich und Sie werden daher einen Dienst für dynamisches DNS verwenden. SSL-Zertifikate sind allerdings an den Namen der Hauptdomain gebunden und Let’s Encrypt beschränkt die Anzahl der Zertifikate pro Domain auf 100. Es ist dann Glückssache, ob Sie ein Zertifikat erhalten. Wenn nicht, probieren Sie einen anderen Domainnamen aus. Dynamische DNS-Dienste bieten meist mehrere davon an.

(PC-Welt/ad)