Dank Let's Encrypt haben Sie eine schnelle Möglichkeit, für Ihre Webseite ein kostenloses SSL-Zertifikat zu erhalten, das von den meisten Browsern akzeptiert wird. Somit gibt es nun keinen Grund mehr, die eigene Webpräsenz nicht (auch zusätzlich) per HTTPs auszuliefern. Weitere nützliche Informationen erhalten Sie in freiesMagazin 2016/01.
Diesem Howto gehen wir davon aus, daß auf Ihrem Webserver bereits Apache 2.4 läuft, als Distribution Debian (oder eine auf Debian-basierende Distribution) eingesetzt wird und Sie uneingeschränkten root-Zugriff auf die Maschine haben.
Loggen Sie sich als "root" auf Ihrem Webserver ein. Installieren Sie zuerst das Paket "git", das zum Herunterladen des "Let's Encrypt"-Clients benötigt wird:
apt-get install git
Erstellen Sie ein neues Verzeichnis, in das die Let's-Encrypt-Software anschließend heruntergeladen wird:
mkdir /updates
cd /updates
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
Sie können das SSL-Zertifikat gleich für eine Reihe von Domains erstellen lassen, unter denen Ihr Webserver von außen zu erreichen ist. Ist Ihr Webserver unter "example.com" und "www.example.com" erreichbar, so erstellen Sie das kombinierte Zertifikat mit:
./letsencrypt-auto --renew-by-default \
--server https://acme-v01.api.letsencrypt.org/directory \
-d example.com -d www.example.com auth --apache
Das Zertifikatsdateien werden in diesem Beispiel unter "/etc/letsencrypt/live/example.com/" abgelegt, da "example.com" dem 1. Domainnamenparameter entspricht.
Falls Sie das Apache-SSL-Modul noch nicht eingerichtet haben sollten, so holen Sie dies bitte – wie z.B. unter wiki.ubuntuusers.de beschrieben – nach. Fügen Sie nun die SSL-Dateien in die Apache-Konfigurationsdatei für Ihre Domain ("example.com" und "www.example.com" ersetzen Sie bitte durch Ihre Domainnamen) ein:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
[...]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem
DocumentRoot /var/www/
[...]
</VirtualHost>
Ggf. benötigen Sie hierzu einen neuen "VirtualHost"-Eintrag.
Für zusätzliche Sicherheit sollten Sie sorgen, indem Sie nur noch als sicher angesehene Verschlüsselungsalgorithmen und Perfect Forward Secrecy einsetzen. So beugen Sie unter anderem dem Heartbleed-Bug vor und erschweren eine nachträgliche Entschlüsselung. Informationen zur Konfiguration finden Sie im Thomas Krenn Wiki.
Starten Sie abschließend Apache neu mit:
/etc/init.d/apache2 restart
Nachdem Sie Ihren Apache-Websever eingerichtet haben, sollten Sie testen, ob dieser korrekt konfiguriert ist. Hierzu sollten Sie einen oder mehrere online-Tests machen. Folgende Webseiten bieten einen solchen Service an:
Zudem sollten Sie testen, ob alle (auch von externen Webseiten eingebunden) Inhalte Ihrer Webpräsenz per HTTPs ausgeliefert werden. Denn sobald auch nur ein Bild per HTTP übertragen wird, schlägt u.A. Firefox Alarm.
Zeigt Firefox links neben der Adreßzeile ein grünes Vorhängeschloß, so wird alles auf der aktuell angezeigten Seite per HTTPs übertragen. Um sicherzugehen, sollten Sie auch die weiteren Seiten Ihrer Webpräsenz überprüfen.
Stoßen Sie auf ein Problem, so können Sie die Ursache direkt in Firefox ermitteln: Heben Sie hierzu die Blockierung von "gemischten Inhalten" auf, wie unter support.mozilla.org beschrieben. Drücken Sie anschließend die Taste "F12" zum Einblenden der Entwicklerwerkzeuge. Öffnen Sie den Reiter und laden Ihre Seite erneut. Nun sehen Sie in der Liste, welche Elemente per HTTP ausgeliefert werden und so zu einem Fehler führen.
Die von Let's Encrypt ausgestellten Zertifikate haben (derzeit) eine Gültigkeitsdauer von 90 Tagen. Sie müssen also dafür Sorge tragen, daß das Zertifikat rechtzeitig erneuert wird. Dies können Sie am einfachsten mit einem cron-Job automatisieren. Hierzu erstellen Sie ein Skript, das Sie z.B. unter "/updates/autoUpdateCert.sh" speichern. Dieses hat den folgenden Inhalt ("example.com" und "www.example.com" ersetzen Sie bitte durch Ihre Domainnamen):
#!/bin/bash
cd /updates/letsencrypt
./letsencrypt-auto --renew-by-default \
--server https://acme-v01.api.letsencrypt.org/directory \
-d example.com -d www.example.com auth --apache
/etc/init.d/apache2 restart
Machen Sie das Skript ausführbar mit:
chmod +x /updates/autoUpdateCert.sh
Um es um 0 Uhr an jedem 1. eines Monats auszuführen, fügen Sie in "/etc/crontab" die folgende Zeile ein:
0 0 1 * * root /updates/autoUpdateCert.sh
Starten Sie abschließend "cron" neu mit:
/etc/init.d/cron restart