Let's Encrypt SSL Zertifikate

In dieser Schritt für Schritt Anleitung beschreiben wir, wie Sie einfach ein SSL Zertifikat von Let's Encrypt (für einzelne oder auch dutzende Domains) erstellen & verwalten.

Zertifikat erstellen

Diese Anleitung zeigt, an einem Beispiel mit 34 Domains (jeweils mit/ohne www; also 68 Einträge), wie ein SSL-Zertifikat erstellt und eingebunden (bei Host Europe) wird.
Die Schritte sind für eine einzelne Domain analog.
Der "Clou" der Anleitung besteht darin das sich auch (abgesehen von der "Vorbereitung") dutzende Domains in unter 30 Minuten erneuern lassen. Wobei es sich genau genommen um eine erneute "Erstausstellung" handelt.

Weiterleitung einrichten

Nur notwendig bei vielen Domains, nicht bei 1 bis 3: der eine wesentliche Aufwandstreiber bei den Zertifikaten besteht im Download der ACME Dateien und dann im Upload (per ftp) in den jeweiligen ".well-known/acme-challenge/" Ordner der einzelne Domains.

Hier schafft folgender "Trick" Abhilfe: von den 34 Domains wird eine Domain als "zentraler" Behälter ausgewählt, z.B. "www.odge.info/.well-known/acme-challenge/" und in diesem Ordner werden dann alle 68 ACME Dateien gespeichert.
Damit die Überprüfung funktioniert, wird im Ordner der 33 weiteren Domains "www.xy01.info/" bis "www.xy33.info/" eine ".htaccess" Datei mit folgenden 2 Zeilen benötigt:

RewriteEngine on

RewriteRule (.*)  http://www.odge.info/.well-known/$1   [R=301,L]

RewriteRule für .well-known

Diese Umleitung bewirkt, das alle Anfragen auf Dateien (zum Beispiel: "xyz") für die ACME Challenge auf "www.odge.info/.well-known/acme-challenge/xyz" umgeleitet wird ($1 = xyz).

Dieser Schritt muss nur einmalig durchgeführt werden. Danach müssen diese 33 Domains nicht mehr angefasst werden. Da sowohl der Inhalt der ".htaccess" als auch die Ordnerstruktur (wobei "/acme-challenge/" leer ist) immer gleich sind, legt man auf dem lokalen Laufwerk irgendwo diese "Struktur" an und lädt sie dann per ftp sukzessive hoch.

www.sslforfree.com

Die weiteren Schritte können im Prinzip auch bei zerossl.com durchgeführt werden und für eine einzelne Domain gibt es keinen Unterschied (bis auf das Problem das "zerossl.com" unter Firefox manchmal nicht funktioniert). Der vereinfachte Download der ACME Dateien (s.u.) mit dem Chrome PlugIn "Chrono Sniffer" funktioniert allerdings bei "zerossl.com" nicht.

  1. Auf der Startseite von www.sslforfree.com in das Formularfeld werden alle 68 URLs (mit / ohne www) per Copy & Paste eingegeben. Die Quelle kann aus einer Excel-Datei mit 2 Spalten stammen. Die Webseite konvertiert "Leerzeichen" bzw. "Tabulatorzeichen" automatisch in Kommas.
    Dann auf den Button "Erstellen Sie kostenloses SSL Zertifikat" klicken. Sieht danach so aus:

    Liste der Domains für SSL Zertifikate

  2. Die Benutzer-Oberfläche ist etwas gewöhnungsbedürftig: zunächst auf (1.) "manuelle Überprüfung" klicken, gleich danach auf (2.) "Überprüfen Sie manuell Domain" dann erscheint ohne weitere Klicks (3.), die Liste mit den Links zu den 68 ACME Dateien.

    Liste der ACME Dateien für die manuelle Verifizierung

  3. Die Download Links haben alle die Struktur "https://www.sslforfree.com/create?verification=blabla". Deswegen das Google Chrome AddOn "Chrono Sniffer" aufrufen und "verif" ganz unten im Dialog eingeben. Danach sind unter "Sonstige" alle 68 Dateien markiert und werden mit einem Klick in den lokalen Chrome Download Ordner heruntergeladen.

    Download der ACME Dateien mit Chrono Sniffer

    Bei "zerossl.com" werden mit diesem PlugIn zwar auch alle 68 Dateien heruntergeladen, jedoch haben die die Namen "Download (1)" bis "Download (68)" was nicht weiter hilft.

  4. Jetzt die 68 Dateien in den Ordner "www.odge.info/.well-known/acme-challenge/" per ftp hochladen (bei nur einer Domain halt analog) und bei 1-3 Domains testen ob die Umleitung wie gewünscht funktioniert.

  5. Dann bei "www.sslforfree.com" den grünen Button "Laden Sie SSL Zertifikat" klicken und etwa 10-20 Minuten (je nach Auslastung) geduldig warten und schließlich "Download SSL Zertifikat" klicken.

  6. Die Datei "sslforfree.zip" (1.) entpacken. Sie enthält 3 Dateien. Wobei "certificate.crt" und "private.key" obligatorisch sind. Diese werden nun z.B. bei Host Europe im KIS Menüpunkt "SSL und Sicherheit" (2.) als "globales" Zertifikat (3.) hochgeladen.

    Globales SSL Zertifikat bei Host Europe

  7. Fertig! Die Datei "ca_bundle.crt" ist optional. Es ist ein "Zwischenzertifikat" und hilft die Zeitspanne von bis zu 42 ;-) Stunden zu überbrücken, bis das eigentliche Zertifikat ordentlich "verteilt" ist. Mit Hilfe dieser Datei können Sie nach einigen Minuten z.B. unter https://www.sslshopper.com/ssl-checker.html oder https://www.ssllabs.com/ssltest/ überprüfen ob alles in Ordnung ist.

Anmerkung: Zumindest bei Host Europe bewirkt ein "globales" Zertifikat das prinzipiell alle Domains des Hosting-Pakets per https erreichbar sind. Ruft nun ein Browser eine Domain des Pakets auf, die nicht in der Liste der Zertifikate vorhanden ist, so gibt es die bekannte Fehlermeldung. Das ist ok bei geparkten Domains oder so. Gar nicht gut bei "echten" Projekten. Also: besser alle relevanten Domains entsprechend umstellen.

Let's Encrypt

Bei Let's Encrypt (LE) handelt es sich um eine gemeinnützige Zertifizierungsstelle der Internet Security Research Group (ISRG) mit Sitz in San Francisco. Deren Zertifikate sind 90 Tage gültig. Das Angebot wird von einem automatisierten Prozess begleitet, der die manuelle Erstellung, Validierung, Signierung, Installation und Erneuerung überwinden soll.

Sponsoren sind u.a. die “Electronic Frontier Foundation” (EFF), die “Mozilla Foundation”, Akamai, “Google Chrome” und “Cisco Systems”.

Doch, wie es der IT-Gott so wollte, braucht es für den Automatismus entweder spezielle Rechte (um das Programm Certbot (Python basiert) ausführen zu können) auf den Hosting Servern, oder der Hoster ihrer Wahl, muss die Einbindung von Let's Encrypt implementiert bzw. im Backend verfügbar gemacht haben.

Zwar lässt sich Certbot auch lokal auf Windows-Rechnern ausführen und es gibt auch freie Skripte die helfen, die manuelle Verlängerung zu vermeiden, doch all dies ist für den Novizen eine sehr fricklige und heikle Angelegenheit.

Anmerkung: Für Shops ist sind die Let's Encrypt Zertifikate kaum geeignet (es gibt durchaus Unterschiede in der "Qualität" der verschiedenen Aussteller (= Zertifizierungsstelle (CA von englisch certificate authority)), wohl aber für Informationsseiten, Firmenauftritte, usw.

Kurzum, wenn man nicht zum inneren Zirkel der Knowhow Träger gehört, bzw. wenn der eigene Hoster Let’s Encrpyt nicht vollumfänglich unterstützt (wie z.B. Host Europe), bleibt neben dem Wechsel nur der manuelle Weg und zwar alle 3 Monate.

ACME

Das ACME (Automatic Certificate Management Environment) ist ein Protokoll zur Prüfung der Inhaberschaft einer Internet-Domain. Es dient vor allem der vereinfachten Ausstellung von digitalen Zertifikaten für TLS-Verschlüsselung.

Damit nun nicht ein Bösewicht, ein SSL-Zertifikat für die Domain xyz beantragt (und erhält) passiert folgendes:

  • Der Aussteller erstellt 1 Datei, die der "Webmaster" (oder seine willenlosen Programme), dann in dem Verzeichnis ".well-known/acme-challenge/" ablegen muss.
  • Anschließen überprüft der Aussteller ob er diese beiden Dateien inklusive des Inhalts im obigen Pfad findet.
  • Falls ja, wird das Zertifikat erstellt.

Da nur der Aussteller und der Antragsteller die Dateinamen kennen (und Server heute so konfiguriert sind, das eine "Verzeichnis-Sicht" geblockt wird, gilt dieses Verfahren als sicher (auch wenn der Ordner ".wellknown" in jüngster Zeit vermehrt zum Angriffsziel wurde).
Beispiel: Dateiname "R2D2-HHGttG-ATarixyz42abc123-HTH" mit dem Inhalt "R2D2-HHGttG-ATarixyz42abc123-HTH.blabla-loremipsum_carpe-diem".

HTTPS / TSL

Damit https (Hypertext Transfer Protocol Secure) die Daten zwischen Server und Client (hier meistens Browser) verschlüsselte (und damit abhörsicher) übertragen kann muss TSL (Transport Layer Security; früher auch Secure Sockets Layer (SSL) genannt) aktiv sein.

Der Client, der sich mit einem Server (Domain) verbindet, führt er zu allererst (also bevor er irgendwelche „Dokumente“ die der Server sendet entgegennimmt), einen Validierungsalgorithmus durch, indem er überprüft ob:

  • Das „Subject“ des Zertifikats mit dem Hostnamen (z.B. Domänenname) überein stimmt.
  • Das Zertifikat wird von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde.
  • Das Zertifikat noch nicht abgelaufen (sprich gültig) ist.

Falls eine der Bedingungen nicht erfüllt ist, kommt es zu einer Warnung ab den Benutzer, und dieser kann entscheiden, ob er das „Risiko“ eingehen will, die Webseite trotzdem zu besuchen, oder eben nicht.