Kostenlose Zertifikate für TLS/SSL-Verschlüsselung

By Harald 2 comments

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 Zertifikats, 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

2 Comments

Alexander Großmann

Oct 10, 2018, 7:44 pm Reply

Hallo,

ich muss scheinbar meine Owncloud auf SSL umstellen damit iOS 12 sich wieder synchronisiert und bin dabei auf deine Anleitung gestossen.
Muss das Zertifikat alle 90 Tage erneuert werden oder kann man auch einfach das “alte” dauerhaft nutzen.

Die Owncloud hängt nur bei mir im privaten LAN und wird nich nach außen getunnelt.

Ich würde die Schritte der alten Anleitung von dir (selfssl-zertifikat) und dann danach diese hier ausführen.
Geht das?

danke.
Alexander

Harald

Oct 10, 2018, 9:02 am Reply

Hallo Alexander,

>>Muss das Zertifikat alle 90 Tage erneuert werden oder kann man auch einfach das “alte” dauerhaft nutzen.
Du musst alle 90 Tage erneuern, dauerhaft geht es nicht. Du bekommst aber rechtzeitig vor Ablauf eine Erinnerungs-Mail. Danach gehst du einfach ins ~/certbot Verzeichnis und verlängerst z.B. mit sudo ./certbot-auto. Du kannst die Verlängerung auch mit Cronjobs automatisieren, aber damit habe ich mich noch nicht beschäftigt.

>>Ich würde die Schritte der alten Anleitung von dir (selfssl-zertifikat) und dann danach diese hier ausführen. Geht das?
Kann ich nicht sagen, probier es aus. Ich rate nur noch zu Letsencrypt, was bei mir problemlos funktioniert.
Grüße
Harald

Leave a Reply