Update: LetsEncrypt bei Hosteurope mit Script einrichten

Veröffentlicht von

LetsEncrypt Zertifikate bei Hosteurope nutzen funktioniert, allerdings gibt es vonseiten des Providers derzeit keine Unterstützung. Die Zertifikate müssen selbst erzeugt und hochgeladen werden. Mit dem passenden Script geht es schneller.

Mein bisheriger Artikel zum Thema ist bereits ein paar Jahre alt. Leider bietet Hosteurope immer noch keine Unterstützung für LetsEncrypt an. Da das Script vom letzten Artikel nicht mehr unterstützt wird, gibt es hier ein Update und ein neues Script.

Das Script stammt nicht von mir, zur Verfügung gestellt hat es Frank Breitinger. Die Homepage von Frank findet ihr unter www.fbreitinger.de. Ich habe ein paar kleine Anpassungen vorgenommen, z.B. dass die Keys automatisch generiert werden, wenn diese noch nicht vorhanden sind, was die Handhabung erleichtert. Das Script basiert auf den ACMECert Client.

Das Script gibt es hier zum Download.

Der Quellcode ist auch auf Github verfügbar.

Die erste Einrichtung ist etwas umfangreich, aber die Erneuerung der Zertifikate ist dann in Zukunft in wenigen Minuten erledigt. Alles ist in diesem Artikel beschrieben, alternativ für Freunde des Bewegtbilds gibt es hier ein Video:

Die Vorbereitungen

Zuerst entpacken wir das Script und öffnen zwei Dateien mit einem Editor unserer Wahl. Fangen wir mit der myletsencrypt.sh Datei an.

Zuerst tragen wir im oberen Teil unsere E-Mail-Adresse ein. Falls wir andere Dateinamen für den “account_key” und den privaten Schlüssel verwenden, können wir dieses hier ebenfalls eingeben. Sofern noch kein Account-Key oder privater Schlüssel vorhanden ist, kein Problem. Das Script legt diese automatisch an. In diesem Fall lassen wir die Dateinamen wie sie sind.

Anschließend tragen wir alle Domains der Reihe nach ein. Zuerst kommt immer der interne Pfad auf dem Webspace. Anschließend tragen wir die Domains ein. Im Beispiel ist zu sehen, dass wir jede Domain mit und ohne www eintragen, da es sich bei www technisch um eine Subdomain handelt. Weitere Domains und Subdomains fügen wir nach diesem Muster ein. Hier ein Beispiel von unserem Webspace. Man beachte die Trennung der Domains und das am Ende vom Pfad kein abschließendes \ erscheint.

Die zweite Datei die wir bearbeiten ist die Datei “main.php”. Hier tragen wir die Accountnummer unseres Hosteurope-Accounts ein.

Die Nummer wird in der E-Mail eingetragen und als Link verwendet, damit wir direkt in die richtige Stelle im KIS springen können.

Einrichtung des Scriptes

Jetzt kopieren wir das Script auf unseren Webspace. Ich habe das Script einfach direkt im Root-Verzeichnis hochgeladen.

Idealerweise laden wir das Script mit dem SSH-Benutzer hoch, damit dieser auch gleich die Schreibrechte auf das Script und den Ordner hat. Dies können wir im KIS unter der Dateiverwaltung machen. Dazu markieren wir den Ordner und weisen ihm den Benutzer und Gruppe zu, welcher mit “wp” beginnt. Anschließend sollte dies auch in den Spalten sehen.

Script ausführbar machen

Nachdem dies erledigt ist, loggen wir uns mit SSH auf dem Server ein und wechseln in das Verzeichnis. Nun führen wir den folgenden Befehl aus:

chmod +x myletsencrypt.sh

Damit machen wir die Datei ausführbar, sodass wir diese direkt über SSH ausführen können.

Account-Key und Privater Key

Wer bereits die alte Version des Scriptes verwendet hat, kann seinen Account-Key und den privaten Schlüssel weiter verwenden. Dazu spielen wir diesen einfach in den Pfad mit ein. Sofern andere Dateinamen verwendet werden, muss das Script von oben angepasst werden.

Ansonsten kann dieser Schritt übersprungen werden. Die Dateien werden sonst Script automatisch erstellt.

Berechtigungen in den Verzeichnissen

LetsEncrypt prüft, ob wir der rechtmäßige Besitzer der Domain sind. Dazu legt das Script im Ordner “.well-known” unter jeder Domain eine Datei ab. LetsEncrypt prüft, ob diese Datei mit richtigem Inhalt auf dem Webspace vorhanden ist. Nur wenn dies der Fall ist, erhalten wir ein Zertifikat.

Überprüfen Sie daher, ob das Script den entsprechenden Ordner beschreiben kann. Dies geht leicht über die Dateiverwaltung.

In diesem Beispiel passt es, der Ordner beginnt mit “wp”, d.h. der SSH-Benutzer kann den Ordner beschreiben. Ggf. legen Sie den Ordner an und weisen diesem die Rechte zu.

Erstellung der Zertifikate

Jetzt wird es spannend, wir erstellen nun das Zertifikat. Dazu starten wir das Prozedere über SSH mit dem folgenden Befehl.

./myletsencrypt.sh

Sofern alles geklappt hat wird eine Erfolgsmeldung ausgegeben. Bei Fehlern sollte man prüfen, was für eine Fehlermeldung ausgegeben wird. Oft sind es fehlende Schreibrechte auf den “.well-known” Ordner, Tippfehler in den Pfaden oder Subdomains, welche nicht mehr existieren.

Bei Erfolg haben wir im Anschluss ein paar mehr Dateien im Ordner:

Unser Zertifikat ist in der “fullchain.pem”. Diese Datei müssen wir zusammen mit “cert_private_key.pem” bei Hosteurope hochladen.

Einbinden in KIS

Das Script ist so konfiguriert, dass wir die Dateien auch gleich per E-Mail erhalten.

Der Link führt uns direkt an die passende Stelle im KIS. Hier können wir nun die beiden Dateien hochladen.

Das Zertifikat wird nun übernommen und nach wenigen Minuten sollte es aktiv sein und den Seiteninformationen mit Gültigkeitsdatum angegeben sein.

Fazit

Damit sind wir am Ziel! Schöner wäre es natürlich, wenn Hosteurope LetsEncrypt einfach unterstützen würde und die SSL-Zertifikate im Hintergrund generieren würde. Da hier seit etwa 3 Jahren nichts passiert ist, würde ich hier keine schnelle Besserung erwarten. Bis dahin hilft das Script, auch wenn es alle 3 Monate manuelle Arbeit bedeutet.

Fragen?

Fragen zum Script und bei Problemen zur Anleitung beantworte ich gerne in unserem Forum:

https://ekiwi-blog.de/forum/board/board/16-webdesign-html-und-php/

10 Kommentare

  1. 1. Dein Skript (bzw. Deine Anleitung) ist GENIAL – ich habe mich bislang davor gescheut diese Art von Weg einzuschlagen.
    2. Was war der Grund, dass das “erste” Skript nicht mehr funktioniert? Die Frage stellt sich deshalb, weil ja befürchtet werden muss, dass DIESES Skript ja ebenfalls bald nicht mehr funktionieren KÖNNTE.
    3. Es ist WICHTIG, dass die Dateien des Skripts NICHT binär sondern im ASCII-Format hochgeladen werden müssen (FileZilla) – darauf bin ich nämlich “reingefallen” – dies wird nämlich sonst bei der Ausführung mit einem sinnlosen Fehler quittiert 😉

    1. Hi, freut mich das es funktioniert. Das mit Binär und ASCII muss ich mal testen, normal sollte es keinen Unterschied machen?! Zu Punkt 2: LetsEncrypt macht die API für den alten Client dicht. Da wurde irgendeine Sicherheitslücke gefunden. Kann natürlich hier auch wieder passieren, aber der alte Client lief ja auch ein paar Jahre. 🙂
      Ansonsten danke für das Feedback.

  2. Und mich freut’s erst! Das erste Mal, als ich auf das Thema “Binär / ASCII” gestoßen bin, war, als ich einen ersten CronJob testen wollte. Auch hier musste “ASCII” eingestellt sein (Anweisung in den FAQ von HostEurope?!?). ASCII ist wahrscheinlich eine Standardeinstellung in FileZilla – ich habe es aber auf Binär eingestellt, weil erst dann die Dateigrößen LOKAL und auf dem FTP-Server 1:1 sind (hauptsächlich bei PHP, HTML, CSS-Dateien).

    Weiteres kurzes Lob: Auf Deine Seite stoße ich relativ regelmäßig, wenn es um derartige Themen geht. Du beschreibst sehr, sehr gut und Deine Videos sind sehr angenehm zu schauen! LG GR

    1. Hallo Gregor, danke für das Lob. 🙂
      Ich habe mir die Sache mal angeschaut, eigentlich sollte es egal sein obs im Binär-Modus hochgeladen wird, da das Script “LF” als Zeilenende verwendet. Kann natürlich sein, dass Du bei Bearbeiten mit CRLF abgespeichert hast, dann wäre ASCII die bessere Wahl. Wie auch immer, ich habe die Sache zum Anlass für ein neues Tutorial und Video genommen: https://ekiwi.de/index.php/906/ftp-uebertragung-ascii-und-binaer-was-ist-der-unterschied/

      Gruß
      Andy

  3. Großartig, dass das Skript nun wieder funktioniert! Etwas schöner wäre noch, wenn die Konfigurationsoptionen alle an einer Stelle wären (aktuell Email, Zertifikatdateien, Domains etc. in .sh und die Kundennummer in der main.php), aber das ist Meckern auf hohem Niveau 😉

Kommentar hinterlassen

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