Die Zertifizierungsstelle Let’s Encrypt (letsencrypt.org) hat sich auf die Fahnen geschrieben, für jeden Serverbetreiber einfach zu installierende TLS-Zertifikate (früher SSL) bereitzustellen – und das dazu noch kostenlos. Ich habe auf meinem Ubuntu-Server (Version 16.04), auf dem Apache läuft, mit wenigen Mausklicks ein Zertifikat erhalten, sodass sich meine Domain mit einem schönen grünen “https” präsentierte. Voraussetzung ist, dass man über eine eigene Domain verfügt, Apache installiert hat und zumindest eine index.html-Seite im Document Root liegen hat. Als erstes habe ich mir die Client-Software Certbot bei Github heruntergeladen.

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

Wechsel ins Verzeichnis certbot:

cd certbot

Nach Eingabe von

./certbot-auto

werden über 170 MB an zusätzlich notwendigen Paketen installiert. In dem Prozess erscheint eine Auswahlmaske (“Which names would you like to activate HTTPS for”), die die gewünschte Domain aufführen sollte. Mit OK wird bestätigt, und anschließend kann man seine E-Mail-Adresse eintragen. Als nächstes stimme ich den Lizenzbedingungen zu. Schließlich wird noch gefragt, ob alle Domainanfragen auf HTTPS geleitet werden sollen. Das möchte ich, und so wähle ich “Secure” aus.

Mit einem Glückwunsch zu erfolgreicher Installation wird die Empfehlung ausgesprochen, die neue Konfiguration unter ssllabs.com prüfen zu lassen. Die Prüfung fällt völlig zufriedenstellend aus, meine Domain erhält ein grünes “A”. Auch der Aufruf meiner Domain unter mydomain.de wird sofort umgeleitet zu https://mydomain.

Auch dieses Seite kann beim Aufspüren von SSL-Fehlern hilfreich sein: https://www.jitbit.com/sslcheck/

Gebe ich allerdings www.mydomain.de ein, erfolgt die Übertragung nicht mehr verschlüsselt. Standardmäßig fügt der Certbot-Client in die Datei mydomain.conf, die unter /etc/apache2/sites-available liegt, folgende Zeilen hinein:

RewriteCond %{SERVER_NAME} =mydomain.de [OR]
RewriteCond %{SERVER_NAME} =*.mydomain.de
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

Diese drei Zeilen ersetze ich durch

RewriteCond %{HTTP_HOST} !^mydomain\.de$ [NC,OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://mydomain.de/$1 [R=301,L]

und schon wird auch www.mydomain.de zu https umgeleitet.

Typo3 und baseURL

Bei einer Typo3-Installation ist es mir passiert, dass das ganze Layout der Seite zerschossen war, nachdem ich die oben beschriebenen Schritte durchgeführt hatte. Der Grund lag in der Zeile

baseURL = http://{$siteURL}/

Nachdem ich sie geändert hatte zu

baseURL = https://{$siteURL}/

lief alles wieder rund. (Die siteURL ist im Root Template unter constants definiert.)

Das Zertifikat besitzt eine Gültigkeit von 90 Tagen und kann jeweils nach 60 Tagen für weitere 90 Tage verlängert werden.

Zertifikat verlängern

Um die Zertifikate zu verlängern, begebe ich mich ins Verzeichnis ~/certbot. Dort lassen sich die Zertifikate mit einer der folgenden Zeilen erneuern:

sudo letsencrypt renew
sudo certbot renew
sudo ./letsencrypt-auto renew
sudo ./certbot-auto renew
sudo ./certbot-auto
sudo ./letsencrypt-auto

Im Endeffekt bewirken alle Befehle eine Erneuerung des Zertifikts, bloß die Anzeige im Terminal ist unterschiedlich.

Bis auf die beiden letzten Befehle lassen sich die Zeilen zuvor testen, indem man den Zusatz –dry-run –agree-tos an das Kommando anhängt. Zum Beispiel:

sudo letsencrypt renew --dry-run --agree-tos