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/

Einrichten als Cronjob

Nutzer Heliophob hat in unserem Forum Hinweise zur Einrichtung des Scriptes mit Cronjob beschrieben.

Problembehebungen

Im Folgenden ein paar Problembehebungen, welche im Forum von anderen Benutzern angesprochen worden sind.

Unix Zeilenende

Das Script muss auf dem Server mit Unix-Zeilenende abgelegt werden. Windows verwendet standardmäßig ein CRLF-Zeilenende (Carriage Return, Line Feed), Unix/Linux verwendet nur “LF”.

Passt dies nicht, dann kommt es zu Fehlermeldungen wie diese hier:

/bin/sh^M: bad interpreter

In Programmen wie Notepad++ kann das schnell überprüft werden. Auch eine Konvertierung ist hier schnell möglich.

Could not resolve host: acme-v02.api.letsencrypt.org

Hier liegt die Ursache vermutlich an einem zu “kleinen” Webhosting-Paket. Das Script, bzw. die notwendige Funktion im SSH-Zugang funktioniert erst ab den WebServer-Paketen von Hosteurope.

Manuelles Einrichten

Wer ein kleines Webhosting-Paket hat und eine CURL-Fehlermeldung bekommt, der kann den manuellen Ansatz zur Erstellung von LetsEncrypt-Zertifikaten ausprobieren.

82 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 😉

  4. Hallo Andy, auch, wenn ich noch einige Wochen Zeit habe das Zertifikat zu erneuern, habe ich mir für heute vorgenommen das Skript erneut zu testen – was auch gut war / ist:

    Das Skript funktioniert (hier bei 54 Domains) – BIS auf eine einzige Domain (obwohl sich eigentlich nichts geändert hat). Lasse ich DIESE Domain raus – funktioniert alles einwandfrei – lasse ich die Domain in der Liste jedoch drinnen, erscheint folgende Meldung vom Skript:

    xxx-repair.eu = Beispieldomain

    Validation failed: http://www.xxx-repair.eu
    Triggering remove callback for http://www.xxx-repair.eu
    Error: Challenge validation failed: Invalid response from https://www.xxx-repair.eu/.well-known/acme-challenge/911duBjxM81bP2pZ_ymjOtfuylWYzjUlhzO8uy2FGTQ [2a01:488:42:1000:b24d:54fc:ffcb:8231]: “\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/D&quot; (urn:ietf:params:acme:error:unauthorized)

    Hast Du eine Idee hierzu? Es kann – meines Erachtens – nicht nicht an der TLD .eu liegen, da andere .eu-Domains funktionieren. Auch habe ich diesen Eintrag der betreffenden Domain an eine andere Stelle gelegt – es passiert jedoch stets mit DIESER Domain.

    Vielen Dank für Deine Ideen – LG GR

    1. Hallo,

      schwer zu sagen, ist an der Domain irgendwas anders? Ich hatte schonmal den Fall, dass es Probleme mit einer externen Domain gab. Passiert das jedes Mal bei genau dieser Domain?

      Gruß
      Andy

      1. Hallo Andy,

        das war eine Betriebsblindheit meinerseits 😉 Ich habe den Fehler gefunden, auch wenn ich nicht weiß, wie / wann er entstanden ist: Es lag “lediglich” daran, dass der Pfad bzgl. Domainzuordnung falsch war…

  5. Hallo Andy,
    so ein Script ist genau das, was ich suche, um die Handhabung von Let’s Encrypt Zertifikaten bei HostEurope erträglich zu halten. Vielen Dank für das Teilen deines Wissens.
    Ich bin deiner Anleitung Schritt für Schritt gefolgt…hänge jetzt aber bei der Ausführung des Scriptes, die Meldung lautet:
    -bash ./myletsencrypt.sh: /bin/sh^M: bad interpreter: No such file or directory
    Muss ich zuvor noch etwas installieren, bevor ich das Script nutzen kann? Mein Paket: WebServer Basic HDD
    Über einen Hinweis, der mich weiterbringt, würde ich mich sehr freuen!

    1. Hallo Henning,

      darauf bin ich auch “reingefallen” – es liegt SEHR wahrscheinlich daran, dass Du als Übertragungsmethode der sh-Datei im FTP-Programm von BINÄR in ASCII umstellen musst (bei FileZilla unten rechts in der Statuszeile). Dann musst Du die Datei erneut hochladen.

  6. Hallo Andi,

    vielen Dank für das Skript – ich hatte alles über zero-ssl automatisiert – aber die haben ja von heute auf morgen den Service verändert…

    ja, der Anfang scheint erstmal schwierig – wenn man aber einmal den Durchlauf hat, ist es im Grunde ganz einfach.

    Ich habe noch ein Problem mit Wildcard-Domains – aber das finde ich auch noch raus.

    Und vielleicht fällt Dir spontan was zu folgender Frage ein: Glaubst Du, man das ACME-Script umschreiben, auf eine Validierung per DNS-Eintrag? Bislang schreibe ich per E-Mail an Dr. Bob von HE alle DNS-TXT-Einträge neu habe darüber die Validierung durchgeführt . Hintergrund ist, dass ich viele Subdomains habe, die keine wirklichen Pfade habe, wo ich eine Datei ablegen kann. Oder braucht Letsencrypt die Dateien zur Validierung in Echtzeit (DNS Einräge dauern ja immer etwas..).

    Vielen Dank aber für das Skript – das hilft ungemein! Stephan

  7. Hallo Andy,

    mal wieder danke für deinen Beitrag und das Tutorial.
    Kannst du mir sagen, wie ich ein SSL-Zertifikat für eine Wildcard-Domain mit dem Script bekomme?

    Danke!

    Liebe Grüße

    1. Bin zwar nicht Andy, aber antworte trotzdem

      Kurze Antwort: Wenn du den Nameserver von Hosteurope verwendest, ist eine automatische Austellung eines WildCard Zertifikates leider nicht möglich.

      Lange Antwort: Zur Ausstellung eines WildCard Zertifikates muss auf der entsprechenden Domain ein TXT Eintrag hinzugefügt werden, der dann von LetsEncrypt überprüft wird. Bei Domains die den Hosteurope Nameserver verwenden, ist das nicht automatisiert möglich. Es gibt leider keine API die man automatisiert ansprechen kann. Diverse ältere Skripts haben sich daher im KIS eingelogged und die Benutzereingaben simuliert. Das war aber erstens ziemlich fehleranfällig und zweitens funktioniert das Skript manchmal bei der kleinsten Änderung an der Domainverwaltungsseite nicht mehr. Inzwischen geht das leider sowieso nicht mehr, weil HostEurope den Login ins KIS mittels captcha abgesichert hat, sodass automatische Logins von Skripten nicht mehr funktionieren

      1. Danke, ich habe das Script damals umgeschrieben. Dann funktioniert es mit Wildcards, vorausgesetzt man ändert manuell den TXT-Eintrag – so wie du es schon geschrieben hast.

        Ich hab Andy “mein” umgeschriebenes Script zur Veröffentlichung hier zugesendet. Falls es noch jemand braucht 🙂

        Liebe Grüße

  8. Hallo Andy,

    danke für deine gute Anleitung.
    Da das alles Neuland für mich ist und war mir daher wirklich eine große Hilfe. – Ich habe nun wie beschrieben die Scripte “main.php” und “myletsencrypt.sh” mit Notepad++ angepaßt.
    Leider bekomme ich in der Eingabeaufforderung von Windows 10 folgende Meldung:

    wpxxxxxxx@ssh01:~/ssh$ ./myletsencrypt.sh
    Error in GnuTLS initialization: Failed to acquire random data.
    Generating account file
    —————————

    Registering with LetsEncrypt
    —————————-
    Registering account
    Initializing ACME v2 live environment
    Using cURL
    Error: HTTP Request Error: Could not resolve host: acme-v02.api.letsencrypt.org
    wpxxxxxxx@ssh01:~/ssh$

    +++++
    Erneutes Ausführen des Befehls:
    +++++
    wpxxxxxxx@ssh01:~/ssh$ ./myletsencrypt.sh
    Error in GnuTLS initialization: Failed to acquire random data.
    Generating private_key file
    —————————
    —–BEGIN PRIVATE KEY—–

    —–END PRIVATE KEY—–

    Done.Generating CSR
    Getting account info
    Initializing ACME v2 live environment
    Using cURL
    Error: HTTP Request Error: Could not resolve host: acme-v02.api.letsencrypt.org
    wpxxxxxxx@ssh01:~/ssh$

    ssh ist das Verzeichnis, wo die Dateien “ACMECert.php, main.php, myletsencrypt.sh, PHPMailer.php” stehen. wpxxxxxxx und wpxxxxxxx_YYYYYYYYYY habe ich natürlich für meinen HE-Account angepasst. Habe bei HostEurope einen SSH-Zugang. Kann mit FileZilla auch auf das Verzeichnis “ssh” zugreifen.
    “.well-known” – Ordner ist in jeder Domain und Subdomain angelegt und inder HE-Dateiverwaltung auf wpxxxxxxx überprüft worden.

    Frage: Was habe ich falsch gemacht?
    Danke für deine Hilfe.

    VG
    Oliver

      1. Hallo Andy,
        Entschuldigung, dass ich Dir erst heute antworte. Danke für Deine Nachricht.
        Ich habe das Hosteurope Produkt “WebHosting Medium”.
        VG Oliver

    1. Hallo,

      bei mir bricht das Sc ript mit folgender fehlermeldung ab, nachdem es noch vor 3 Monaten kompleztt durchgelaufen ist:

      Error: Challenge validation failed: Invalid response from https://www.mydomain.de/.well-known/acme-challenge/CMGwlaRCg7FP0A0gC78hbuuiTuzuGFjVMlYB44d7vLs [3e1:477:42:1220:523:e59f:ftfa:3704]: “\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/D&quot; (urn:ietf:params:acme:error:unauthorized)
      mkdir(): File exists

      1. Klingt als ob da ein Verzeichnis nicht angelegt werden kann. Am Besten mal schauen, ob die .well-known Ordner noch da sind und was für Rechte die haben, die sollten dem SSH-User gehören (wpXXXXX). Ist leider von hier aus auch schwer zu helfen von außen.

  9. Hallo Andy,

    das Skript funktioniert super.

    Kannst Du im Artikel oben vielleicht noch ergänzen, ob man wie beim alten Skript eine automatische E-Mail-Benachrichtigung erhält, wenn sich das Ablaufdatum nach 90 Tagen nähert?

    Ich wollte bei HE einen cron job definieren, aber wenn man die “myletsencrypt.sh” dort ohne “./” davor aufruft, erhält man eine Fehlermeldung, dass die main.php nicht aufgerufen werden konnte. D.h. da müsste man vermutlich irgendetwas an den Pfaden beim Aufruf ändern.
    Meine Absicht war, dass ich z.B. alle 1920 Stunden (= 80 Tage) per cron job automatisch die E-Mail mit den beiden Zertifikat-Anhängen erhalte.

    Vielleicht hast Du eine Idee.

    Ansonsten tut es natürlich auch eine Kalendererinnerung im E-Mail-Client…

    VG Martin

    1. Danke für das Feedback. Die E-Mail kommt ja direkt von LetsEncrypt, denke die kommt auch wieder, wenn Du die richtige E-Mail-Adresse im Script angibst, die wird dann ja übermittelt.
      Wegen dem Cronjob, das habe ich selbst noch gar nicht getestet. Ggf. müssten hier die Pfade auf absolute Pfade angepasst werden.

      Gruß
      Andy

        1. Hallo,

          die Erinnerungs-E-Mail kam auch beim neuen Skript wie bisher und Andy hatte bereits geschrieben, dass diese direkt von LE kommt – d.h. dort hat sich nichts geändert.

          Und zum Cron Job danke ich Dir für den Link, den Du auch oben im Artikel eingebaut hast. Das probiere ich einmal aus.

          VG Martin

  10. Hallo,
    erstmal vielen dank für die gute Anleitung.
    Habe nun alles wie beschrieben eingestellt, bekomme aber in der Konsole diese Fehlermeldung:
    Could not resolve host: acme-v02.api.letsencrypt.org

    Die Keys wurden angelegt, habe bei HE den Tarif WebHosting Medium.

      1. Danke für die Info. Habe das schon befürchtet, da es ja nur ein behelfsmässiger SSH Zugang ist. Aber bevor ich mir den Server antue, wechsle ich lieber zu einem anderen Provider 😁.

        1. Wenn ich nicht soviele Domain Projekte bei Hosteurope hätte, wäre ich auch schon weggewechselt. Habe noch eine Domain bei All-Inkl. da aktiviert man LetsEncrypt einmal für eine Domain und der Rest passiert automatisch.

  11. Zunächst möchte ich mich für die Mühen und die Artikel bedanken. Hatte mir ebenfalls geholfen, als ich vor ein paar Jahren bei Hosteurope Lets Encyrpt einrichten wollte.

    Allen, die hier lesen, möchte ich aber eine klare Empfehlung geben: Falls es keinen zwingenden Grund gibt, bei HE zu bleiben, wechselt zu einem anderen Anbieter!

    Ich habe das aus Faulheit Jahre lang aufgeschoben und mir alle 3 Monate für eine handvoll (Sub-)Domains diese Gängelung angetan und bin jetzt endlich gewechselt. Es ist wirklich wie eine Offenbarung! Beim neuen Anbieter sind es 2 Klicks und LetsEncrypt läuft UND wird automatisch verlängert. Keine Erinnerungs-Mails mehr, kein Generieren und hochladen mehr. Das fühlt sich so gut an. Als hätte mich jemand nach Jahren in einer Höhle ans Tageslicht geführt 😀

    Lieber 1x Arbeit und Zeit in den Wechsel stecken und zu einem vernünftigen Hoster wechseln. Es gibt inzwischen so viele Hoster, die einen weit besseren Support bieten, mehr Performance bei gleichem Preis liefern, mehr Inklusivleistungen haben, aktuellere Plattformen betreiben (wir mussten bis vor ein paar Monate auf MySQL 5,7 warten! 5.7. Im Jahr 2020!)

    Man scheut die Arbeit – ich kenne das. Man befürchtet Ausfälle oder Probleme. Und weiß ja auch nicht, wie es bei dem neuen Anbieter laufen wird.
    Aber seht auch die Möglichkeit, dass alles besser werden kann: Wir zahlen bei unserem neuen Hoster weit weniger, haben Domains kostenlos, die bei HE jedes Jahr zusätzlich hinzukamen, haben 2-3x schnellere Seitenerstellungszeiten, einen – bisher(!) – besseren Support UND als Sahnehäubchen SSL für alle Domains und Subdomains mit 2 Klicks integriert. Kein Überlegen, ob man für die (Sub-) Domain wirklich SSL braucht, weil man dann alle drei Monate Arbeit hat. Man aktiviert es einfach. Nach Jahren manuellen Skriptens bei HE ist das wie eine Befreiung.

    Und der Wechselprozess selbst hat mich auch darin bestätigt, von HE wegzugehen. Unsere Domains wurden teilweise 3 Tage blockiert und die Verantwortung auf den neuen Anbieter geschoben. Erst auf eine deutliche Mail waren die Domains binnen Minuten endlich frei.

    Man sollte wirklich Dinge nicht akzeptieren, die einen stören.Man ärgert sich ständig, statt 1x Arbeit und Zeit aufzuwenden. Es gibt genug Anbieter, die einen unterstützen und mit einem in dieselbe Richtung wollen.

    Sorry fürs Off-Topic, aber ich wünschte, mir hätte vor Jahren bereits jemand gesagt: Hier ist eine Anleitung, aber hey: Lass das Frickeln bei HE. Das lohnt sich nicht. Die werden sich nicht ändern / bessern und du wirst immer wieder Theater haben. Mach einen Strich und geh zu einem anderen Hoster.

    Aber nochmal Danke für die Hilfe! Das hat mir die Jahre bei HE sehr geholfen.

    1. Servus,

      Du beschreibst es schon richtig. Wer ohne Aufwand wechseln kann oder will sollte es tun. Zu welchem Anbieter bist Du gewechselt? Ich habe noch ein Projekt bei All-Inkl und dort ist die Aktivierung von LetsEncrypt ein Klick und man muss sich um nichts mehr kümmern.

      Gruß
      Andy

      1. Genau dorthin. Ärgerlicherweise hatte mir vor dem Wechsel zu HE 2017 bereits ein Testserver bei denen angeschaut und war zufrieden, fühlte mich aber “verarscht”, als mir auf Rückfrage gesagt wurde, dass der Testserver weit höhere Ressourcen hat, als das Paket, das ich angefragt hatte. Naja…war ein Fehler. Ich hätte es trotzdem versuchen sollen. Hätte mir Kosten und Ärger bei HE erspart. Aber besser spät, als nie.

        Es gibt aber eine Reihe guter Anbieter. Ich hatte auch ein Testserver bei cyon als Beispiel – Support und Performance machten einen guten Eindruck. Hatte ich vorher noch nie von gehört.

        1. Cyon hatte ich auch schon im Auge. Leider ist ein Wechsel bei unseren ganzen Domains und E-Mail-Konten recht aufwändig. Von daher bleiben wir erstmal bei HE. Aber ärgerlich bleibt die Sache leider.

  12. Hallo Andy, wird der “.well-known” einmalig (quasi global) angelegt oder muss für jede Domain (Homepage) im Unterverzeichnis ein eigener “.well-known”-Ordner angelegt werden?

  13. Hallo Andy, kannst Du mir sagen, was folgende Fehlermeldung bedeutet:
    Certificate-chain retrieved
    550: Sender must exist (ec:12)
    Error: Class ‘PHPMailer\PHPMailer\Exception’ not found
    mkdir(): File exists
    wpxxxxxx@xxxxxx:~/le$

    PS: muss meine Mail einer Domain entsprechen?

  14. Hey, eine Standardadresse war bereits hinterlegt. Hab’ sie zur Sicherheit mal erneut gesetzt. Im Ordner liegen nun die fullchain.pem & cert_private_key.pem. Werde es gleich mal testen.

    1. Lösch mal die Zertifikate nochmal aus dem Ordner und erstelle die dann neu, anschließend neu hochladen. Kommen ansonsten noch irgendwelche Fehlermeldungen vom Script?

  15. vielen Dank. Hab’ das im Rahmen meiner Möglichkeiten über Keytool überprüft. Der Gültigkeitszeitraum passt und die Domains werden mit bzw. ohne www aufgeführt.Mehr kann ich da nicht erkennen.

    1. Du kannst mir gerne mal den Link zur Webseite schicken, dann schaue ich mal, ob bei mir das richtige Zertifikat angezeigt wird. Ansonsten bleibt wohl nur der HE Support.

  16. Danke für Dein Angebot. Hab’ es bereits auf unterschiedlichen Rechnern versucht. Eine Subdomain hatte noch kein Zertifikat und ist weiter “unsicher”. Versuche es mal bei HE … melde mich.

  17. Zwischenstand: ich soll laut HE die alten Zertifikate mal händisch löschen und anschließend einen neuen Versuch starten; was ich heute Abend dann mal machen werden … Update folgt 🙂

  18. Danke,

    leider ist ein Server die Grundvoraussetzung. Habe leider nur das Webshosting-Paket.
    Muss mal schauen welche Lösung ich mir in den nächsten 10 Tagen einfallen lasse.

    Ein Grund HostEurope den Rücken zu kehren, aber auch ein Akt mit Umzug von 16 Domains. Habe gerade leider nicht viel Zeit.

    LG
    Luke

    1. Leider kann ich Dir da keinen Tipp geben, außer in einen höheren Tarif zu wechseln. Was den Wechsel angeht, ich habe ein Projekt bei All-Inkl, da lauft LE ohne Probleme und automatisch. Aber umziehen ist immer so eine Sache. Ich wäre auch schon weg, wenn der Aufwand nicht so hoch wäre.

  19. Hi Andi,
    sobald die ACMECert.php auf den Server geladen wird, kommt sie nur leer (0Byte) an. Auch wenn ich den Inhalt via vim einfüge und mit :wq schließe, ist die Datei nach einer Aktualisierung der Ansicht wieder leer.
    An was könnte das liegen und wie wäre ein workaround? Bei sämtlichen anderen Dateien im gleichen dir funktioniert es problemlos.

    LG
    Thomas

      1. auch als ACME.php wird sie hochgeladen und beim aktualisieren des Views mit 0Byte angezeigt.

        Status: Starte Upload von $path\ACME.php
        Status: Dateiübertragung erfolgreich, 23.525 Bytes in 1 Sekunde übertragen
        // datei wird mit der richtigen Byte-Zahl angezeigt
        Status: Empfange Verzeichnisinhalt für “/www/le2″…
        Status: Anzeigen des Verzeichnisinhalts für “/www/le2” abgeschlossen
        // datei ist 0 Byte groß

        1. Sehr seltsames Verhalten, am besten mal einen anderen FTP-Client verwenden, die Datei vor dem Upload umbenennen und ansonsten kann vermutlich nur der Support von HE weiterhelfen.

  20. Ich habe in die main.php nach der foreach($args as $item)-Schleife noch eine Überprüfung eingebaut, ob überhaupt ein Update nötig ist, und dieses nur durchführt, wenn ein Zertifikat innerhalb der nächsten drei Wochen ausläuft.

    $bNeedsUpdate = false;

    foreach(array_keys($domains) as $sDomain) {
    $iTTL = (function($sDomain) {
    $get = stream_context_create(array(“ssl” => array(“capture_peer_cert” => TRUE)));
    $read = stream_socket_client(“ssl://”.$sDomain.”:443″, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get);
    $cert = stream_context_get_params($read);
    $certinfo = openssl_x509_parse($cert[‘options’][‘ssl’][‘peer_certificate’]);
    return $certinfo[‘validTo_time_t’] ?? 0;
    })($sDomain);
    $bValid = $iTTL > strtotime(‘+21 days’);
    echo $sDomain.”\t”.’expires ‘.date(‘Y-m-d’, $iTTL).’; ‘.($bValid ? ‘no action needed’ : ‘renewing’).PHP_EOL;
    if(!$bValid) $bNeedsUpdate = true;
    }

    if(!$bNeedsUpdate) {
    echo ‘everything is up to date.’.PHP_EOL;
    die(1);
    }

  21. Hallo,

    kann es sein, dass die php-Files eine Umgebung mit php 7.2 erfordern? Via SSH bekomme ich
    /usr/bin/env: ‘php7.2’: Permission denied
    zurück, wenn ich die .sh ausführen will.

    Die Rechte für Ordner und Dateien stimmen mit denen der Anleitung überein. Es ist ein Webserver-Tarif von Hosteurope, auf dem nur noch php 7.3 und 7.4 auswählbar sind.

      1. Hi Andy,

        das Update der myletsencrypt.sh enthält in Zeile 22 noch folgende (vermutlich alte) Definition:

        #/usr/bin/env php7.2 certificate_upload.php

        Muss 7.2 hier nicht auch auf 7.4 geändert werden?

        Gruß

        S.

        1. Jain, die Zeile ist derzeit auskommentiert und wird derzeit nicht beachtet. Früher könnte man das Zertifikat gleich hochladen, aber durch Änderungen seitens HE geht das nicht mehr. Die Zeile wird also nicht ausgeführt.

          1. Hi Andy,

            mit der aktuellen myletsencrypt.sh bekomme ich die Fehlermeldung

            Warning: file_put_contents(fullchain.pem): failed to open stream: Permission denied in /is/htdocs/wpXXXXXXXX_XXXXXXXXXX/XX/main.php on line 140

            Die Zeile 140 lautet: file_put_contents(‘fullchain.pem’,$fullchain);

            Ich vermute das liegt daran, dass in dem selben Ordner in den das fullchain.pem abgelegt werden soll bereits eine Datei mit dem selben Namen abgelegt ist. Muss man also das alte Zertifikat immer aus dem Ordner löschen bevor ein neues beantragt wird?

            Danke und Gruß,

            Sparen

          2. Hi Andy,

            danke, war tatsächlich der Fehler mit der falschen Benutzerberechtigung ftp statt wp, da die Skripte per FTP hochgeladen wurden, wodurch sich offensichtlich automatisch der früher im KIS auf wp eingestellte Benutzer automatisch wieder in den Benutzer ftp umgestellt hat.

            WICHTIG: Alle die über Letsencrypt ein Zertifikat für eine Domain mit vielen Subdomains erstellen lassen wollen, müssen hier aufpassen, denn jeder Fehlversuch wird gezählt und man kann dadurch leicht in das Rate-Limit geraten! Siehe: https://letsencrypt.org/de/docs/rate-limits/

            LG
            Sparen

  22. Hallo Andy,
    ich versuch mich auch gerade mit dem Script, habe aber folgendes Problem:
    Führe ich das Scriot aus, so erhalte ich:
    /usr/bin/env: php7.4: No such file or directory

    Schaue ich mit Filezilla auf das Verzeichnis, so finde ich kein Verzeichnis /usr/bin/env

    Es gibt ein /usr/bin/php Verzeichnis, wobei mir der Filezilla folgende Meldung ausgibt
    Befehl: cd “/usr/bin/php”
    Fehler: Directory /usr/bin/php7.2: no such file or directory
    Fehler: Verzeichnisinhalt konnte nicht empfangen werden

    In der Filezilla-Anzeige schaut das Verzeichnissymbol aus wie ein Link, aber es gibt bei mir kein weiteres php… Verzeichnis im /user/bin

    Es handelt sich um ein HE Webhosting medium Paket welches ich habe vor einiger Zeit von einem alten Paket aktualsieren lassen um den SSH Zugang zu erhalten.

    Gruß
    Schorsch

    1. Hallo Schorsch, sieht so aus, als ob er bei Dir das PHP nicht findet. Im Script ist ja PHP7.4 explizit angegeben. Ich habe das Script mal modifiziert, sodass es keine bestimmte PHP-Version verwendet. Ich habe das zum Test mal hier hochgeladen:

      https://www.evernote.com/l/AIh3nFSHcEJPn5XOv_qLUY1MSQ3oDbfBqVs/

      Kannst Du mal testen und schauen, ob der Fehler damit immer noch auftritt. Würde mich über Feedback freuen, dann würde ich die Version zum Download auch entsprechend anpassen.

      Gruß
      Andy

Kommentar hinterlassen

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