Der steinige Weg zu SSL Zertifikaten

Lesedauer ~4 Minuten

Schon seit einiger Zeit ist die Absicherung von Internetverbindungen für Google ein Rankingfaktor bei Webseiten und Blogs. Somit ergab sich für mich auch die Notwendigkeit meine Portale entsprechend mit SSL Zertifikaten auszustatten. Ein langer, steiniger und teurer Weg der mit Hilfe von Let’s Encrypt etwas entspannter ist.

SSL Zertifikat kaufen vs. Let’s Encrypt

Grundsätzlich gibt es mehrere Stufen von SSL Zertifikaten. Die einfachte Stufe ist die eigene Generierung eines Zertifikats und dessen Bereitstellung (Self-signed Zertifikate). Nachteilig bei dieser Methode ist eindeutig die große rote Fehlermeldung des Browsers, dass dies kein vertrauenswürdiges Zertifikat ist. Die Methode ist somit für alles außer Testsysteme ungeeignet.

Die nächste Stufe ist ein Domain SSL Zertifikat. Dies wird über eine autorisierte Stelle ausgegeben und beinhaltet eine Prüfung ob der Antragsteller auch der Besitzer der Domain ist. Das reicht für eine normale Webseite bereits aus. Für besseren Schutz lassen sich auch der Inhaber (Organization SSL Zertifikat) und der Zertifikatsinhaber (Extended SSL Zertifikat) validieren. Letzteres ist für alle Unternehmen relevant die eine grüne Adressleiste (Name des Unternehmens im Browser) benötigen, also beispielsweise Banken oder Versicherungen.

Die Zertifikate reichen dabei je nach Anbieter zwischen 2€ pro Monat bis zu einigen hunderte Euro pro Jahr UND Domain! Bei vielen Domains kommen dabei recht hohe Summen zustande. SSL Zertifikate können daher gebündelt werden (Multidomain SSL Zertifikate), dies spart ein paar Euro. Bei vielen Subdomains besteht ebenfalls die Möglichkeit ein Wildcard SSL Zertifikat zu erstellen, dies beinhaltet dann alle Domain in der Form *.SPech.de.

Ein Zusammenschluss von vielen Unternehmen hat das Projekt Let’s Encrypt gestartet. Das hochgesteckte Ziel ist die Bereitstellung einer Zertifizierungsstelle mit vollständig kostenlosen und sicheren Zertifikaten und deren automatisierte Generierung. Bei den Zertifikaten handelt es sich um Domain und Multidomain SSL Zertifikaten!

Die Einrichtung

Grundsätzlich ist der Ablauf für die Beschaffung eines Zertifikats sehr übersichtlich. Zur Bestellung wird ein privater Schlüssel und ein Certificate Signing Request (CSR) erstellt. Der CSR beinhaltet neben einigen formalen Informationen auch die Domainnamen. Der Request ist dann an die Zertifizierungsstelle zu schicken. Nach der Validierung kommt dann ein Zertifikat (CRT) zurück welches zusammen mit dem privaten Schlüssel für den Webserver nutzbar ist.

Bei virtuellen oder root Servern mit SSH Zugriff und eigener Administration ist der Prozess eher trivial. Let’s Encrypt stellt dazu alle notwendigen Dokumente und Skripte zur Verfügung. Bei gehosteten Webseiten ist die Hürde hier deutlich höher. Eine Anleitung für meinen Provider Hosteurope hat mir sehr geholfen. Da sich das Verfahren hier bei jedem Anbieter (1&1, Strato, GoDaddy, …) unterscheidet gehe ich hier nur auf meine gefundenen Probleme und Hürden ein.

Die Validierung: Entweder lassen sich Domains über DNS Einträge oder (HTML) Dateien validieren. Im ersten Versuch hatte ich die DNS Variante probiert. Leider dauert die Replikation dieser TXT Einträge analog zu A-Records auch 24-48 Stunden. So lange wollte ich dann doch nicht warten. Bei der HTML Variante muss für JEDE! Domain eine eigene Datei in einem Unterverzeichnis abgelegt werden. Dies dauert extrem lange. Zusätzlich hatte ich einige Subdomains die nicht öffentlich zugänglich sind (.htaccess). Für diese Seiten musste ich also die Konfigurationen ebenfalls anpassen damit SSL dort auch funktioniert.

Mixed Contend: Meine Webseiten sind über viele Jahre gewachsen und teilweise aus älteren Systemen überführt worden. Oft schleichen sich dort feste Verweise in der Form http://www.spech.de/.../bild.jpg ein oder Links sind fix mit http erstellt. Dies führt im Browser zu einer Warnung, dass die Seite aufgrund unsicher eingebundener Elemente nicht den aktuellen Sicherheitsrichtlinien entspricht. Entsprechend müssen alle Verweise angepasst werden.

Umleitung: Am Schluss mussten alle Verweise auf die http Version mittels Weiterleitung auf die https Variante eingestellt werden. Neben automatischen Weiterleitungen im Webserver muss diese Einstellung auch in den Content Management Systemen erfolgen (WordPress, Drupal, …).

Lets’Encrypt Automatisierung für HostEurope

Es gibt für HostEurope mittlerweile einen etwas weniger steinigen Weg zusammen mit einem Raspberry Pi (oder anderen Linux Systemen).

Auf dem Raspberry Pi certbot installieren für jessie anhand der Anleitung. Danach die Skripte von hosteurope-letsencrypt konfigurieren und ausführen. Zum Abschluss die passenden Daten in KIS hochladen.