Die neuen CPanel-Tarife von Hosteurope bieten in den höherpreisigen Tarifen eine Auto-SSL-Funktion an. Ist diese aktiviert, wird automatisch ein SSL-Zertifikat für die Domain erzeugt und aktuell gehalten. Doch auch wenn Sie den Standard, Deluxe oder Ultimate Tarif gebucht haben, können Sie Ihre Webseite mit SSL absichern.  Möglich machen dies Let’s Encrypt, ein kleines Script und der SSH-Zugang, welchen alle Pakete mitbringen.

Hinweis: Dieses Script wurde mit PHP 7.x-Version entwickelt, es funktioniert leider nicht mehr, wenn Sie eine aktuelle PHP 8.x-Version verwenden.

Anpassung des Scriptes

Im ersten Schritt benötigen wir das Script. Dieses können Sie hier herunterladen. Entpacken Sie die ZIP-Datei und bearbeiten Sie die „myletsencrypt.sh“-Datei mit einem Texteditor. Hier bietet sich ein Editor wie Notepad++ an, welcher die Linux-Zeilenenden des Scriptes berücksichtigt und nicht verändert. Verwenden Sie nicht den Editor von Windows.

Tragen Sie Ihre E-Mail-Adresse ein. An diese werden die Zertifikate nach der Erstellung gesendet. Zusätzlich müssen die Ordner und Domains festgelegt werden.

Abbildung1 – Let's Encrypt Zertifikate generieren – Anpassung des Skripts

Die Konfiguration der Domains ist in Blöcken unterteilt. Jeder Block enthält den Pfad zur Webseite auf dem Server, sowie die Domainnamen. Tragen Sie die Domainnamen ein, unter welcher die Webseite erreichbar ist. Geben Sie für die Domain auch die „www“-Subdomain mit an.

Das Script gestattet die Erstellung von Zertifikaten für beliebig viele Domains und Subdomains, sofern diese auf dem gleichen Server liegen.

Tipp: Den Pfad zur Webseite können wir mit SSH und dem Linux-Befehl „pwd“ schnell ermitteln.

Abbildung2 – Let's Encrypt Zertifikate generieren – den Pfad mit SSH ermitteln

Upload des Scriptes

Nach den Anpassungen laden Sie das Script auf den Webspace. Das Script können Sie im Verzeichnis unterhalb des „public_html„-Verzeichnisses ablegen. Der Verzeichnisname kann frei gewählt werden, im Beispiel verwenden wir „le„.

Ausführen des Scriptes

Für die Erstellung des SSL-Zertifikates müssen wir nun noch das Script „myletsencrypt.sh“ ausführen. CPanel bringt hier dankenswerterweise ein Terminal mit, welches direkt im Browser läuft. Wechseln Sie im Terminal mit dem Befehl „cd le“ in das „le“-Verzeichnis.

Das Script müssen Sie noch ausführbar machen. Hierzu geben Sie „chmod +x myletsencrypt.sh“ ein.

Abbildung3 – Let's Encrypt Zertifikate generieren – Erstellung der Zertifikate

Nun kann es losgehen. Durch Eingabe von „./myletsencrypt.sh“ starten Sie die Erstellung der Zertifikate.

Im Hintergrund passiert vereinfacht folgendes: das Script teilt Let’s Encrypt mit, dass wir gerne für Domain XY ein SSL-Zertifikat hätten. Der Dienst muss nun prüfen, ob wir berechtigt sind für diese Domain ein Zertifikat anzufordern. Dies passiert durch das Anlegen einer Datei mit bestimmten Inhalt, welchen Let’s Encrypt uns vorgibt, im Ordner „.well-known„. Let’s Encrypt prüft den Inhalt und stellt damit sicher, dass wir die Domain unter unserer Kontrolle haben.

Je nach Anzahl der Domains müssen Sie etwas Geduld mitbringen. Hat alles geklappt, erscheint die Meldung, dass die E-Mail mit den Zertifikaten versendet wurde.

Abbildung4 – Let's Encrypt Zertifikate generieren – E-Mail mit Zertifikaten

Sollte es zu Fehlermeldungen kommen, prüfen Sie diese. In vielen Fällen sind es Tippfehler in den Pfadangaben zur Webseite oder der Domain. Ein „/bin/sh^M: bad interpreter“ deutet auf fehlerhafte Zeilenenden hin, welche der Editor eingefügt hat. Achten Sie hier auf Linux- bzw. Unix-Zeilenenden (LF).

Abbildung5 – Let's Encrypt Zertifikate generieren – Dateiende beachten

Zertifikat installieren

Das erstellte Zertifikat wird Ihnen per E-Mail zugeschickt, alternativ liegt es nun auch im Verzeichnis unseres Scriptes und kann mittels FTP oder SFTP heruntergeladen werden. Die E-Mail enthält zwei Dateien, den privaten Schlüssel (cert_private_key.pem) und unser Zertifikat (fullchain.pem).

 Abbildung6 – Let's Encrypt Zertifikate generieren – Zertifikat installieren

Speichern Sie beide Dateien auf Ihrer Festplatte ab. Das Zertifikat laden wir nun im CPanel hoch. Klicken Sie auf den Unterpunkt SSL/TLS.

Abbildung7 – Let’s Encrypt Zertifikate generieren – Menüpunkt SSL/TLS in cPanel

Hier klicken Sie auf den Unterpunkt „SSL-Zertifikate generieren, aufrufen, hochladen oder löschen„. Hier können Sie nun die Zertifikatsdatei hochladen.

Abbildung8 – Let's Encrypt Zertifikate generieren – Zertifikatsdatei hochladen

Eine Erfolgsmeldung erscheint und das neue Zertifikat wird angezeigt. Klicken Sie nun auf „Installieren“ um das Zertifikat zu installieren.

Abbildung9 – Let's Encrypt Zertifikate generieren – Zertifikate auf dem Server

Wir sind fast am Ziel! Im nächsten Dialog müssen Sie nun den privaten Schlüssel einfügen. Öffnen Sie dazu die „cert_private_key.pem“ mit einem Texteditor, kopieren Sie den Inhalt und fügen Sie ihn in das Textfeld für den privaten Schlüssel ein. Anschließend kann das Zertifikat installiert und aktiviert werden.

Abbildung10 – Let's Encrypt Zertifikate generieren – Zertifikat aktivieren

Fertig! Das Zertifikat ist aktiv und beim Aufruf Ihrer Webseite sollte das Schloss-Symbol eine SSL-Verbindung signalisieren. Klappt dies nicht gleich, hilft ein beherztes STRG + F5 um den Browser zu aktualisieren.

Aktualisierung des Zertifikates

Die Zertifikate von Let’s Encrypt sind mit einer Gültigkeit von 3 Monaten ausgestattet. Vor Ablauf sollten Sie die Zertifikate erneuern. Dies gelingt zum Glück ohne langwierige Konfiguration. Führen Sie einfach das Script neu aus und Sie erhalten die Zertifikate neu generiert per E-Mail zugesendet. Auch die Einrichtung eines Cronjobs ist möglich. Kommt eine Domain hinzu, fügen Sie diese einfach im Script ein und führen das Script erneut aus. Dies geht zu jedem Zeitpunkt, auch vor Ablauf des Zertifikats.

 

Viel Erfolg!

Andy Dunkel
Letzte Artikel von Andy Dunkel (Alle anzeigen)

One thought on “cPanel – Let’s Encrypt Zertifikate generieren und nutzen

  1. Hallo Herr Dunkel,

    danke für Ihre Anleitung!

    Ich habe allerdings noch ein Problem, die Zertifikatserzeugung wird bei mir noch nicht abgeschlossen und zwar scheitert die Prüfung der Challenge-Datei.
    Wenn ich „myletsencrypt.sh“ ausführe, werden „account_key.pem“ und „cert_private_key.pem“ angelegt, aber dann kommt es zum Fehler:

    Waiting for server challenge validation
    https://acme-v02.api.letsencrypt.org/acme/authz-v3/54120817240 [200] (0.62s)
    Validation failed: http://www.rokoko.de
    Triggering remove callback for http://www.rokoko.de
    Error: Challenge validation failed: Invalid response from https://www.rokoko.de/.well-known/acme-challenge/L0SVhphyqvvNUqR66R9nFqTYU7SRK1Ub6S09QqnC-fc [83.169.40.198]: html\nhead\nmeta http-equiv=\“Content-Type\“ content=\“text/html;charset=utf-8\“/\ntitleError 404 Requested resource not found.“ (urn:ietf:params:acme:error:unauthorized)

    Was mir falsch vorkommt, ist, dass der Zugriff auf die Challenge-Datei über HTTPS erfolgt, also über eine SSL-gesicherte Verbindung, die ja in vielen Fällen noch nicht besteht, sondern erst eingerichtet werden soll!
    Ich habe im Web etwas recherchiert und andere Ablaufprotokolle gesehen, in denen gezeigt wird, dass HTTP verwendet wird, was mir wesentlich vernünftiger erscheint.
    Gibt es eine Stelle in den Scripts (PHP oder SH), wo man das Protokoll wählen kann?

    Oder liegt die Fehlerursache ganz woanders? Ich habe in das Verzeichnis „.well-known/acme-challenge“ geschaut und dort nichts gefunden, bin aber nicht sicher, wie das zu interpretieren ist: wurde die Challenge-Datei dort abgelegt und nach dem (gescheiterten) Abrufversuch wieder entfernt, oder wurde sie gar nicht erst erzeugt/abgelegt?

    Mit freundlichem Gruß
    Tillmann Wegst

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Die von Ihnen hier erhobenen Daten werden von der Host Europe GmbH zur Veröffentlichung Ihres Beitrags in diesem Blog verarbeitet. Weitere Informationen entnehmen Sie bitte folgendem Link: www.hosteurope.de/AGB/Datenschutzerklaerung/