Hosteurope – SSL-Zertifikate von LetsEncrypt automatisch verlängern und einrichten [Update 31.05.2020]

Veröffentlicht von

Hosteurope unterstützt leider immer noch kein LetsEncrypt. Man kann zwar die SSL-Zertifikate von LetsEncrypt bei Hosteurope nutzen, muss aber ein vergleichsweise unpraktisches Verfahren anwenden um diese zu nutzen. Ich hatte die Vorgehensweise bereits hier im Blog beschrieben.

Achtung: das hier verwendete Script funktioniert nicht mehr, eine Aktualisierung und neuen Artikel gibt es hier:


Je nach Anzahl der Domains artet da in jede Menge Arbeit aus. Diese muss zudem alle 3 Monate wiederholt werden. Meine Hoffnung ist, dass Hosteurope irgendwann direkt in der Admin-Oberfläche Unterstützung für LetsEncrypt bietet. Andere Webhoster wie Uberspace oder Serverprofis bieten dies bereits. Aber ich bin mit Hosteurope sonst in allen Belangen zufrieden und ein Wechsel von derzeit über 10 Webseiten ist auch nicht mal eben getan.

Glücklicherweise wurde Emile Schenk von donauweb.at auf meinen Artikel aufmerksam und er hat ein Script gebastelt, mit welchem man den ganzen Prozess auch bei Hosteurope automatisieren kann. Das sehr pfiffige Script automatisiert die Erstellung und Einbindung der Zertifikate bei Hosteurope. Zudem hat er mir erlaubt das Script hier vorzustellen und auch zum Download anzubieten.

Das Script selbst basiert auf CertLE, einem LetsEncrypt-Client auf Basis von PHP. Der Aufruf erfolgt direkt in der Shell. D.h. ein SSH-Zugang bei Hosteurope ist Pflicht. Bevor man sich nun an die Automatisierung macht, sollte man das im ersten Blogartikel gezeigte manuelle Verfahren einmal von Hand durchmachen, damit man die beiden benötigten Dateien account_key.pem und domain_key.pem erhält.

Das Script gibt es hier zum Download.

Schauen wir uns im ersten Schritt die Dateien an:

Die markierten Dateien müssen vor der Nutzung angepasst werden. In die .kis-Datei müssen die Zugangsdaten für den KIS-Zugang von Hosteurope eintragen werden. In der Datei certificate_upload.php muss das $homedir angepasst werden:

$homedir = '/is/htdocs/wp999999_ZZZZZZZZZ';

Hier trägt man einfach den kompletten Pfad zum Script ein. Mittels dem Linux-Befehl pwd kann man in der Konsole den Pfad schnell ermitteln:

wp@vwp1108:~/le$ pwd
/is/htdocs/wp999999_ZZZZZZZZZ/le

Nun kommt die Anpassung der myletsencrypt.sh Datei:

/usr/bin/env php7.0 CertLE.php cert account_key.pem domain_key.pem \
    -w /is/htdocs/wp999999_ZZZZZZZZ/www/DOMAIN1/ \
    -d www.domain1.com \
    -w /is/htdocs/wp999999_ZZZZZZZZ/www/DOMAIN2/ \
    -d www.domain2.com \
    --csr csr.pem \
    --cert cert.pem \
    --chain chain.pem \
    --fullchain fullchain.pem

Angepasst werden müssen die Zeilen für jede Domain und Subdomain:

    -w /is/htdocs/wp999999_ZZZZZZZZ/www/DOMAIN1/ \
    -d www.domain1.com \
    -w /is/htdocs/wp999999_ZZZZZZZZ/www/DOMAIN2/ \
    -d www.domain2.com \

Wie man sieht, gibt man hier den absoluten Pfad auf dem Webspace an, zusätzlich mit der Domain. Da www.domain1.com und domain1.com technisch gesehen zwei Domains sind, sollte man beide Schreibweisen angeben:

    -w /is/htdocs/wp999999_ZZZZZZZZ/www/DOMAIN1/ \
    -d domain1.com \
    -d www.domain1.com \

Je nach Anzahl der Domains und Subdomains wird die Liste recht lang. Hat man alle Anpassungen vorgenommen, wird das Script zusammen mit den Dateien account_key.pem und domain_key.pem auf den Webspace geladen.

Die beiden Dateien myletsencrypt.sh und upload.sh müssen zudem noch ausführbar gemacht werden. Hierfür genügt es via FTP die Rechte 777 zu vergeben.

Bei unserem ersten manuelle Erstellen der Zertifikate haben wir bereits die Verzeichnisse .well-known/acme-challenge angelegt. Sofern dies mittels FTP erfolgt ist, muss hier noch der Besitzer des Ordners abgeändert werden. Dies geht am Besten über die Dateiverwaltung in KIS:

Hat der Ordner den Besitzer ftpXXXXX, dann den Ordner markieren, die Besitzer und Gruppe auf wpXXXXX abändern. Das Ganze rekursiv. Andernsfalls kann das Script die Challenge-Dateien nicht abspeichern und es kommt zu einer Fehlermeldung.

Wie man sieht, ist auch dieser Weg zur Automatisierung steinig und erstmal Arbeit. Ist der Prozess abgeschlossen, können wir jetzt jedoch über SSH die Erneuerung der SSL-Zertifikate anstoßen:

./myletsencrypt.sh

Bei der Ausgabe sollte man auf Fehlermeldungen achten. Bei mir gab es ein paar Probleme mit den Berechtigungen. Denen sollte man nachgehen, wenn eine Datei nicht geschrieben werden konnte. Das Script legt die Challenge-Dateien von LetsEncrypt ab und löscht diese am Ende wieder. Hier kam es zu Warnungen, dass Verzeichnisse nicht entfernt werden konnten. Diese Warnungen kann man ignorieren.

Klappt alles, erfolgt die Ausgabe, dass das Zertifikat nun angelegt worden ist.

Das Zertifikat wird nun abgelegt:

  Saved Fullchain to: fullchain.pem
Saved Certificate to: cert.pem
      Saved Chain to: chain.pem
        Savee CSR to: csr.pem

Wer mag, kann die Dateien herunterladen und bei Hosteurope im KIS hochladen. Alternativ kann man den Befehl:

./upload.sh

Ausführen. Dieser erledigt den Upload, sofern man die korrekten Zugangsdaten in die .kis abgelegt hat.

Beim manuellen Upload verwendet man die fullchain.pem als Zertifikat und domain_key.pem als Key-Datei. Anschließend überprüft man im Browser, ob das Zertifikat korrekt übernommen worden ist. Dies kann ein paar Minuten dauern.

Beim Erneuten verlängern, müssen nun nur noch alle paar Monate die Befehle für die Generierung und dem Upload ausgeführt werden.

Update

Kommt beim Ausführen der Scripte eine Fehlermeldung:

file_get_contents(http://www.domain.de/.well-known/acme-challenge/59fee33f9fd03): 
failed to open stream: php_network_getaddresses: getaddrinfo failed: 
Name or service not known

Sollte man die Script-Einstellungen im KIS überprüfen. Hier kann ggf. eine Einstellung verhindern, dass PHP auf externe URLs zugreifen kann:

Update – 16.12.2018 – der automatische Upload funktioniert wieder

Download des aktualisierten Scriptes

Nachdem der automatische Upload durch das geänderte Login Verfahren lange Zeit nicht mehr funktioniert hat, hat Emile von donauweb.at das Upload-Script auf den neuen SSO-Login von Hosteurope angepasst. Das Ganze funktioniert perfekt, wie ich selbst bereits getestet habe. Großen Dank dafür!

Für den Upload muss die Datei “certifcate_upload.php” angepasst werden:

Hier wird der Pfad zum Script eingetragen. Diesen bekommt man schnell über die Konsole heraus:

PWD

Anschließend sollte das Script sich ausführen lassen und den Upload wie gehabt durchführen.

Update – 24.02.2019

Es gibt wieder ein kleines Update des Scriptes, der Dank gebührt wieder Emile von donauweb.at. Das Script prüft nun auch, ob das Zertifikat richtig eingespielt worden ist und versendet dann die E-Mail. Auch wird die aktuelle Gültigkeit des Zertifikates in die E-Mail mit aufgenommen. Somit hat man mehr Kontrolle.

hosteurope_letsencrypt_24_02_2019.zip

Update – 02.04.2019

Emile hat es in den Kommentaren bereits geschrieben, das Script kann sich leider nicht mehr bei Hosteurope einloggen:

“Leider hat Hosteurope das Login wieder mit einem Captcha gesichert. Das Captcha ist unsichtbar, aber mit einem Script lässt es sich nicht aushebeln.
Bitte schreibt alle an den Support von Hosteurope, dass ihr unbedingt einen Zugang zum KIS mit Scripts benötigt. Vielleicht hat es einen Effekt, wenn viele Anfragen kommen.
In Bälde kommt eine neue Version des Scripts, die die Zertifikatsdateien per Email verschickt, dann wird man zumindest an den Upload erinnert und das Hochladen geht etwas schneller”

Das Ganze ist natürlich ärgerlich. Meine Empfehlung wäre, dass jeder der LetsEncrypt bei Hosteurope nutzen möchte, den Hosteurope-Support kontaktiert und nachfragt, wann LetsEncrypt direkt und automatisch unterstützt wird. Andere Provider bieten dies mittlerweile direkt an. Wenn es genug Leute anfragen, bewegt sich Hosteurope am Ende irgendwann hoffentlich.

Das Script funktioniert natürlich weiterhin, allerdings muss der Upload von Hand über KIS erfolgen. Emile war so nett, das Script für uns alle anzupassen. Es versendet eine E-Mail mit der Zertifikaten, so dass man daran erinnert wird und die Dateien gleich für den Upload parat hat.

letsencrypt_02_04_2019.zip

Update 15.06.2019

Hosteurope stellt die Version 7.0 von PHP nicht mehr zur Verfügung, von daher musste eine Zeile im Script angepasst werden:

Die Zeile “/usr/bin/env php7.0” muss durch “/usr/bin/env php7.2” ersetzt werden.

Das Script habe ich angepasst:
letsencrypt_02_04_2019.zip

Update 16.08.2019

Ich habe eine kleine Korrektur am Script vorgenommen, welches eine Fehlermeldung erzeugt hat.

letsencrypt_16_08_2019.zip

151 Kommentare

  1. Genial – Gerade deinen Artikel gefunden und werde es testen und dann gerne benutzen – Vielen Dank an dich Andy und auch an Emile Schenk.

    Dennoch hoffe ich das Hosteurope bald merkt, dass es keine Sinn macht Let’s Encrypt im Komfort außen vor zu lassen.

  2. Super, hab gerade den Artikel quergelesen. Das ist, was ich die ganze zeit gesucht hab!
    Mein WebPack bei Hosteurope ist allerdings so alt bzw. klein, das SSH nicht angeboten wird.
    Ich hab an die alte PHPShell gedacht. Die läuft bei mir, wenn ich die Ordner frei gebe, noch.

    Frage: Geht das mit der PHPShell auch? Sollte doch, oder?

  3. Wie gehe ich vor, wenn ich nicht EIN Zertifikat erstellt habe, welches ALLE Domains beinhaltet, sondern für jeden Domain EIN SEPARATES Zertifikat erstellt habe?

    Bzw. kommen bei mir regelmäßig neue Domains dazu. Da müsste ich ja – wenn ich das richtig verstanden habe – sowieso jedes Mal händisch ein neues Zertifikat ausstellen lassen, oder?

    Edit: Jetzt hab ich’s verstanden! Die beiden Keyfiles werden quasi nur initial erstellt. Danach können alle Domains mit diesen beiden Keyfiles verwaltet werden, das Ergebnis sind somit nicht je ein Zertifikat pro Domain sondern ein GLOBALES Zertifikat für alle definierten Domains, welches jedoch nachträglich problemlos erweitert werden kann. Sehr geil! 🙂

  4. Ich habe den Prozess bis auf den Upload per Script fast durch. Leider spuckt mir die Konsole derzeit ein unschönes “550: Sender must exist (ec:13)” entgegen. Die Meldung kommt nach folgenden Anzeigen:

    string(35) “https://kis.hosteurope.de/?…”
    string(35) “https://kis.hosteurope.de/i…”
    string(61) “https://kis.hosteurope.de/a…”

    Dann der Fehler. Ich vermute, es geht um die angegebene E-Mail-Adresse. Diese entspricht in der .kis-Datei jedoch der, die im KIS in den Kontaktdaten angegeben wurde. Oder bezieht sich das auf die Account-Nummer? Hier sind die Kommentare in den Dateien nicht eindeutig. In der .kis steht Nummer des Webpacks, das ist die des Produkt, zu dem der Webserver gehört. In der Datei certificate_upload.php steht “NUMMER VON HOSTEUROPE ACCOUNT”. Das ist nach meiner Interpretation die Nummer des Kundenkontos, also eine andere. Welche gehört denn da rein?

    UPDATE: Es ist die Nummer des Produkts, nicht die Kundennummer. Problem war, dass im KIS unter Skripte & Datenbanken\Skript-Einstellungen keine über Webserver\E-Mail hinterlegte Adresse ausgewählt war. Diese muss angegeben werden.

  5. Leider bekomme ich den “failed to open stream” Fehler, “PHP-allow_url_fopen” und “PHP-allow_url_include” sind aber beide “On”. Hat einer ne Idee woran es noch liegen könnte? Benutzer und Gruppe stehen auch auf “wp…” womit ich mich auch per SSH einlogge.

    Gruß,
    Thomas

    1. Schau Dir mal die Sache unter Update an, bei HE kann man diverse Sicherheitsdinge im KIS einstellen. Das wäre noch mein Tipp, ansonsten keine Ahnung. Der Support von HE ist aber recht fix, ggf. dort anfragen. Viel Erfolg, Andy

    2. Ich habe das selbe Problem. Auf Nachfrage sagt mir der HE-Support, dass bei Webhosting-Tarifen einige PHP Erweiterungen fehlen, um CertLE nutzen zu können, z.B. OpenSSL. Laut “phpinfo” und “php7 -m” stimmt das aber nicht.

      1. Antwort von HostEurope Support:

        Für den Ausstellungsprozess muss das Skript eine ausgehende Verbindung zu den Let’s Encrypt Servern aufbauen. Dieser ausgehende Verbindungsaufbau ist in unseren WebHosting Tarifen per SSH, auch aus einem Skript heraus, nicht möglich.

  6. Hi Andy,

    vielen Dank für das Tutorial! Ich bekomme die Fehlermeldung »Failed to verify challenge after 10 tries« nach Aufruf der `myletsencrypt.sh` … Hast du eine Idee, woran das liegen könnte? Habe das manuell generierte Zertifikat bei HE mal als Test hochgeladen, und das ging ohne Probleme.

    Danke im Voraus und viele Grüße
    Florian

    1. Nachtrag: Vielleicht liegt es daran, dass der Zeitraum zwischen manueller Generierung und der über den Server zu kurz war. Als Status bekomme ich von `$ret=$this->http_request($challenge[‘uri’])` »pending« zurück, und das scheint so lange der Fall zu sein, wie eine andere Challenge »valid« ist (https://community.letsencrypt.org/t/dns-validation-remains-in-pending-status/38681/2). Dann werde ich es in 60 Tagen noch mal probieren 🙂

      1. Auch möglich, spontan hätte ich drauf getippt, dass die .well-known Dateien nicht zugreifbar waren. Ich hatte mal so ein Problem in Verbindung mit .htaccess und Passwortschutz. Aber da kam auch eine andere Meldung.

        Es gibt zumindest auch Rate-Limits: https://letsencrypt.org/docs/rate-limits/

        60 Tage klingt mir etwas lang. Vielleicht kommende Woche nochmal testen.

        1. Hi Andy,

          danke für deine Antwort! Ja, die .well-known-Rechte habe ich denke ich richtig gesetzt, auf den Nutzer mit »wp« vorne.

          Das Rate-Limit dürfte ich eigentlich nicht erreicht haben.

          Auf die 60 Tage bin ich über die ZeroSSL-FAQ gekommen (»The verification results are valid, at the time of writing, for 60 days«), das klingt mir nach dem Zeitraum. Aber ja, vielleicht teste ich es einfach nächste Woche schon noch einmal.

          Viele Grüße

  7. Wow, ich bin sprachlos.
    Dieser Beitrag war wirklich hilfreich. Du hast mir wirklich hunderte Euros gespart (22 Websites) 🙂

    Pro Tipp: Bei mir wollte es nicht mit der domain_key.pem klappen. Warum auch immer.
    openssl genrsa -out privateKey.pem 2048 hat mir weitergeholfen.

    Ganz liebe Grüße vom Niederrhein!

    1. Ok jetzt muss ich doch noch einmal nachtragen:
      Das Script arbeitet ordnungsgemäß nur komischerweise legt es über den Befehl ./upload.sh nur ein Globales Zertifikat an und keines für die vorher definierten Domains. Mache ich etwas falsch?

      Gruß und Danke!

      1. Ich bin scheinbar etwas verpeilt.
        Also, 8 Domains – die erste wird als Antragssteller auf allen Seiten im Zertifikat angezeigt. Ok.
        Das Zertifikat wird als Globales Zertifikat gesetzt und ist auf allen Seiten autom gültig. Ok.

        Problem: Wenn man ein oder mehrere Zertifikate von HE nutzt werden diese dadurch außer Gefecht gesetzt. Bspw. mein Wildcard-SSL-Zertifikat, welches auf Global bleiben MUSS, damit die 100 Subdomains von Domain1.de ordnungsgemäß verschlüsselt sind.

        Das heißt für mich jetzt, dass das Script ungeeignet ist. Oder gibt es einen Trick?

        Danke schonmal!

        1. Hallo,

          ja das Script erzeugt ein globales Zertifikat. Du kannst natürlich auch für jede Domain ein extra “myletsencrypt.sh” Script anlegen und ausführen. Dann generiert das ein Zertifikat nur für die Domain. Beim Upload, müsste es dann auch ein Upload-Script für jedes Zertifikat geben. Hier ist momentan das globale Zertifikat als Formularziel beim Upload definiert:

          $post[2] = array(
          “v_id”=>”0”,
          “menu”=>”6”,
          “mode”=>”sslupload”,
          “wp_id”=>$accountnummer,
          “submode”=>”sslfileupload”,
          );

          Der Schlüssel scheint hier die v_id zu sein. Wenn Du im KIS ein Zertifikat für eine Domain hochladen willst, dann taucht der Paramter in der URL auf, z.B. &v_id=717736. In jedem Script müsste dann denke nur die v_id für die Domain gesetzt werden. Habs aber noch nicht selbst ausprobiert.

          mfg
          Andy

          1. Großartig! Wirklich klasse, es hat funktioniert.
            Nun bekommt jede Domain separat ihr Zertifikat. Läuft einwandfrei.
            Nochmal tausend Dank. Wirklich, das spart mir einige Euro…!

  8. hi, teste auch gerade diese Lösung umzusetzen, das für jede Domain ein eigenes Zertifikat hichgeladen wird.
    Wenn ich das richtig verstanden habe muss ich doch nur pro Domain die myletsencrypt.sh (pfad und pem-dateien) und certificate_upload.php (die v_ID) anpassen und dann jeweils unter anderem Namen abspeichern – oder? Also zum Beispiel myletsencrypt_domain1.sh und certificate_upload_domain1.php usw.
    Und die account_key.pem und domain_csr.pem auch jeweils für die verschieden Domains anderes benennen.
    Also z.B. account_key_domain1.pem usw.

    Hier mal mein Beispiel für die myletsencrypt_domain1:
    #!/bin/sh
    /usr/bin/env php7.0 CertLE.php cert account_key_domain1.pem domain_csr_domain1.pem \
    -w /is/htdocs/wpxxxxxxx_xxxxxxx/www/domain1/ \
    -d http://www.domain1 \
    -d domain1 \
    –csr csr.pem \
    –cert cert.pem \
    –chain chain.pem \
    –fullchain fullchain.pem

    Und das dann für jede Domain, sollte das so gehen?

      1. Danke – Soweit so gut, hab auf dem weg zur fertigen Lösung auch mit Berechtigungsprobleme gekämpft.
        Jetzt habe ich noch einen Fehler, denn ich noch nicht gelöst bekomme.
        Und zwar:
        Generating Certificate Signing Request (CSR)…Error: Could not load domain key: domain_key_domain1.pem
        error:0906D06C:PEM routines:PEM_read_bio:no start line

        Was mache ich falsch 🙁

        1. Spontan würde ich sagen, das mit Deiner Domain-Key was nicht stimmt. Eventuell mit irgendwas überschrieben?

          Die sollte so beginnen:
          —–BEGIN RSA PRIVATE KEY—–
          MIIJKQIBAAKCAgEAzvSEkqK9cF0tq3a0Lb/

          Ansonsten kann ich dazu nicht soviel zu sagen. Vielleicht hat noch jemand anderes eine Idee.

          mfg
          Andy

          1. Fehler gefunden..ich hatte die domain-csr.txt datei (Schlüsselanfoderungsdatei) genommen und umbennat, wie in deinen Video ganz am anfang erklärt. Es musste aber die domain-crt.txt Datei (Zertifikat) sein. Ist da eventl ein Fehler in deinem Video oder hab ich ein Brett vorm Kopf.

            Den erstellung klappt, aber jetzt will der scriptbasierte upload nicht. Der hört ohne Fehlermeldung einfach auf! Eigentlich kann da doch garnicht viel schief gehen. Habe das homedir geändert und dann die v_id (zeile 25) für die Domain eingetragen. v_id mehrfach überprüft. die ist richtig

            So sieht die ausgabe aus:
            xxxxx@xxxxx.server-he.de:~/lets_encrypt$ ./upload.sh
            string(35) “https://kis.hosteurope.de/?logout=1”
            string(35) “https://kis.hosteurope.de/index.php”
            Willkommen in Ihrem Kunden-Informations-System (KIS)
            string(61) “https://kis.hosteurope.de/administration/webhosting/admin.php”
            xxxxx@xxxxx.server-he.de:~/lets_encrypt$

            Eventuell kann der Micha mal seine certificate_upload.php zeigen oder auch seine ganze Lösung zeigen 🙂

          2. Wie sieht die folgende Zeile(n) bei Dir aus?

            $post[2] = array(
            “v_id”=>”0”,
            “menu”=>”6”,
            “mode”=>”sslupload”,
            “wp_id”=>$accountnummer,
            “submode”=>”sslfileupload”,
            );

            Er bricht ja anscheinend genau an der Stelle ab. Vielleicht ein Syntaxfehler?

  9. Nabend Andy,

    danke dir erstmal für die super Anleitung.

    Ich bekomme im Moment zwei CronJobs-Fehler:
    Could not open input file: CertLE.php
    Could not open input file: certificate_upload.php

    PHP-URL-open sind beide auf On.
    Dateirechte auf 777

    Kannst du da einen Tipp geben?

    Danke, LG Konstantin

  10. Danke für die Rückmeldung.
    Kannst du mir bitte sagen, wie ich in so eine Konsole komme?
    Anbieter ist Hosteurope, WebServer Basic mit Cronjob, mit SSL und SSH.

    Danke im Voraus.

    1. Hi Andy,

      danke dir, es läuft jetzt alles. Nur noch den Cronjob einrichten und das wars. Lieben Dank!

      ftpXXX@vwpXXX:~/www/XXXX/ssl_auto$ ./myletsencrypt.sh
      Simulating challenges:
      Testing: http://www.XXX.de…OK
      Validating domains:
      Validating: http://www.XXX.de…OK [XXXXXX]
      Generating Certificate Signing Request (CSR)…OK
      Requesting Certificate…OK
      Requesting Intermediate CA Certificate…OK

      Saved Fullchain to: fullchain.pem
      Saved Certificate to: cert.pem
      Saved Chain to: chain.pem
      Saved CSR to: csr.pem

      commonName: http://www.XXX.de
      issuer: Let’s Encrypt Authority X3
      serialNumber: XXXXXXXXXXXXXXXXXXXXXXXXX
      validFrom: Sun, 18 Feb 2018 13:57:22 +0100
      validTo: Sat, 19 May 2018 14:57:22 +0200
      string(35) “https://kis.hosteurope.de/?logout=1”
      string(35) “https://kis.hosteurope.de/index.php”
      Willkommen in Ihrem Kunden-Informations-System (KIS)
      string(61) “https://kis.hosteurope.de/administration/webhosting/admin.php”
      Die Dateien wurden erfolgreich hochgeladen
      ftpXXXXXX@vwpXXXX:~/www/XXX/ssl_auto$

  11. Sehe ich das richtig, dass bei 100 Domains Schluss ist mit dem globalen Zertifikat? Ich bräucht vermutlich mindestens nochmal so viel…

    Ich hab bei den Kommentaren was gelesen, dass es auch möglich wäre, pro Domain ein separates Zertifikat zu erzeugen. Gibt es hierfür auch schon eine fertige Lösung, die hier mitgeteilt werden könnte?

    Vielen Dank!

    1. Und noch eine Frage: Für mein Verständnis benötige ich dann für jede Domain eine separate account_key.pem und domain_key.pem, ist das korrekt?

      1. Genau, für jede Domain ein Script und einmal diese Dateien. Bei 100 Domains würde ich für jede Domain einen extra Ordner mit den Scripten und Dateien anlegen. Da kommt dann weniger durcheinander.

  12. Wenn ich zwei verschiedene Domains auf den gleichen Webspace zeigen lassen möchte, kann ich mit das Zertifikat in einem Schritt erstellen lassen. Das scheint aber nicht sauber zu funktionieren. Ich bekomme keine Meldung, dass der Upload klappt. Ich habe schon HostEurope dazu befragt, die aber das Problem auch nicht lösen konnten. Es kam nur der Hinweis, dass wir kein Webhosting, sondern einen Webserver einsetzen. Nach ein paar Versuchen verwies mich der Mitarbeiter dann wieder an den Scriptersteller.

  13. Ich habe das jetzt per Cronjob automatisiert:

    Job 1: Am 1. Tag jedes 2. Monats werden die Zertifikate aktualisiert (myletsencrypt.sh)
    Job 2: Am 2. Tag jedes 2. Monats werden die Zertifikate hochgeladen (upload.sh)

    Ich musste für den erfolgreichen Cronjob noch im myletsencrypt.sh sowie upload.sh am Beginn ein cd /is/<> einfügen, da ansonsten die “Could not open input file: CertLE.php / certificate_upload.php” Meldung kam..

    1. Das will ich mir demnächst mal anschauen. Wenn ich das richtig verstanden habe, benötigt man dafür aber DNS Authentifizierung. D.h. so automatisch wie hier, wirds vielleicht nicht werden.

  14. Hallo,
    ich habe folgendes Problem: Die Datei upload.sh lässt sich korrekt manuell ausführen. Wenn ich sie aber über einen Cronjob aufrufe bekomme ich zwar die Meldung, dass das Zertifikat bei Hosteurope installiert wurde, das passiert aber leider eben nicht.
    Hat jemand eine Ahnung, wie das zu lösen ist?

  15. Ich bin nicht ganz so firm. Nochmal für mich zum richtigen verstehen. Ich habe 3 Domains, davon ist eine von hosteurope laut Tarif schon direkt mit SSL Zertifikat versehen. Die anderen 2 Domains werden durch LetEncrypt-Zertifkate verschlüsselt. Für diese Domains benötige dieses Script. SSH ist eingerichtet. Ich müsste also, siehe oben beschrieben, dies so einrichten?

    domain1:
    #!/bin/sh
    /usr/bin/env php7.0 CertLE.php cert account_key_domain1.pem domain_csr_domain1.pem \
    -w /is/htdocs/wpxxxxxxx_xxxxxxx/www/domain1/ \
    -d http://www.domain1 \
    -d domain1 \
    –csr csr.pem \
    –cert cert.pem \
    –chain chain.pem \
    –fullchain fullchain.pem

    domain2:
    #!/bin/sh
    /usr/bin/env php7.0 CertLE.php cert account_key_domain2.pem domain_csr_domain2.pem \
    -w /is/htdocs/wpxxxxxxx_xxxxxxx/www/domain2/ \
    -d http://www.domain2 \
    -d domain2 \
    –csr csr.pem \
    –cert cert.pem \
    –chain chain.pem \
    –fullchain fullchain.pem

    In welche Datei schrieb ich dies rein? Und das sollte dann für jede Domain separat gehen? Und ich bräuchte dann auch 2 LetEncrypt-Zertifkate.

    Ich hoffe ich konnte jetzt mit meinen Worten einigermaßen erklären was ich will?

    Gruß Klaus

  16. Hi Andy,
    der erste Artikel hatte mir damals schon sehr weitergeholfen. Danke auch für den Zweiten.

    Ich hab es allerdings am Ende nicht hinbekommen. Bei mir stoppte es immer mit “Operation not permitted in …. ” obwohl ich alles auf den entsprechenden Nutzer gestellt hatte und am Ende sogar den ganzen Webseiten-Ordner auf 777 gesetzt hatte.

    Ich hab mehrere Domains einem Verzeichnis zu geordnet. Theoretisch habe ich sogar 3 Verzeichnisse mit jeweils einigen Domains.

    Vielleicht hat jemand noch einen Tipp.

    1. Werden die .well-known Verzeichnisse angelegt? Ich hatte auch Probleme, alles lag am Ende an den Berechtigungen. Im Zweifelsfall die Ordner erstmal von Hand anlegen und dem SSH-User als Besitzer mit den Rechten zuweisen.

      1. Ja die Verzeichnisse sind schon angelegt, da ich es seither immer von Hand erneuert haben. Ich muss mir das nochmal genau anschauen wenn ich mehr Zeit habe. Vielleicht gibt es dann ja auch ein “Magic”-Moment 🙂

  17. Hallo,

    habe soweit alles wie in der Anleitung angegeben erstellt.
    Beim Ausführen der myletsencrypt.ch über ssh erhalte ich die Fehlermeldung

    Error: Unknown Parameter:
    ./myletsencrypt.sh: line 10: –csr: command not found

    Ich habe allerdings eine Wildcard Domain mit DNS Authentifizierung über zerossl generiert.
    Kann ich da das Script überhaupt nutzen?

    Grüße

  18. Hallo Andy,

    da zerossl.com down ist, habe ich es mit sslforfree.com probiert. Die manuelle Erstellung hat auch geklappt und das Zertifikat lässt sich problemlos einbinden.

    erzeugt werden die Dateien

    ca_bundle.crt
    certificate.crt
    private.key

    Nun frage ich mich, was die in Deinem Beitrag erwähnten Dateien account_key.pem und domain_key.pem enthalten.

    Aus den Kommentaren hier lese ich heraus, dass domain_key.pem den Private Key enthält.

    Aber was ist in account_key.pem drin? Ist das evtl. ein anderer Name der ca_bundle.crt?

    Danke für Deine Hilfe!

    Michael

    1. Hallo Michael,

      ich habe mich jetzt schon eine Weile damit nicht mehr beschäftigt, aber der Account.key ist denke der Schlüssel zu Deinem LetsEncrypt Account. Mit diesem kannst Du dann deine Zertifikate erneuern. Habe ich so aber auch noch nie verwendet, sondern immer einen neuen angelegt.

      mfg
      Andy

  19. Hi,

    leider funktioniert es nicht mehr, da HE nun einen ReCaptcha vor dem KIS gepflastert hat.
    Vermutlich schmeckt ihnen das nicht!

    Hat wer vl. eine Idee diesen zu umgehen?

    Lg

    1. Ist mir leider auch schon aufgefallen. Umgehen wird schwierig. Die Captchas von Google sind ja eher so gebaut, dass diese nicht leicht zu umgehen sind. Da bleibt erstmal nur das manuelle hochladen.

  20. Das mit dem automatischen Hochladen war’s dann wohl…
    Seit letzter Woche verwendet Host Europe beim Anmelden ReCaptcha, was von einem sicherheitstechnischen Standpunkt aus zu begrüßen ist, aber das automatische Hochladen der generierten Zertifikate per Skript unmöglich macht.

    Der Support ist auch leider null hilfsbereit: Sämtliche Lösungvorschläge wurde nur mit “Alles nicht möglich. Wir hoffen, dass wir Ihnen mit diesen Angaben weiterhelfen konnten.” quittiert.

    Natürlich. Die wollen ja ihre eigenen Zertifikate verkaufen.

    Wird wohl tatsächlich Zeit, sich um einen neuen Hoster umzusehen. Hurra, und das mit über 100 Projekten…

    Wahnsinn, bin ich angefressen!!!

    1. Ja das ist ärgerlich, habe den Beitrag gerade aktualisiert. Zumindest kann das Script noch die Zertifikate erstellen. Manuell hochladen muss man die dann. Andere Provider unterstützen mittlerweile LetsEncrypt selbst.

  21. Ja, das ist natürlich sehr aufwendig wenn man 100 Domains bereits umgestellt hat, ja zum Glück funktioniert das validieren noch.

    Eine Überlegung wäre die Session die erzeugt wird wenn man sich einmalig händisch anmeldet mit einzubeziehen, oder das Script lokal auszuführen, wobei auch hier die Browser Session nicht übernommen wird. Eine weitere Überlegung, eine Client Seitiges Script auf JavaScript Ebene zu schreiben, das sollte theoretisch nach erfolgreichem manuellen anmelden funktionieren, da dies in der gleichen Session läuft.

    Wie gesagt nur mal Überlegungen.

    Lg

    1. Das funktioniert nur alles nicht mit einem Cronjob. 🙁 Meine Hoffnung ist, dass HE irgendwann ein Einsehen hat und LetsEncrypt einfach unterstützt. Ich werde das Script erstmal nur zum Erzeugen der Zertifikate weiter nutzen und dann alle 3 Monate die Zertifikate von Hand hochladen.

  22. Das mit den Captchas ist schon eine totale Grütze. Habe aber festgestellt, dass man mit einem mobilen Browser (in meinem Fall Safari auf einem iPhone) nur das Häkchen beim Captcha setzen muss und keine Bilder angezeigt werden. Wäre das evtl. ein Ansatz diese dämliche Captcha-Abfrage zu umgehen?

    1. Leider nein, da über die Google API im Hintergrund ein großes Regelwerk steht um zu prüfen ob du ein “Bot/Script” bist oder nicht. Beispielsweise IP, Sessions, Cookies usw. usw. usw.

      Für den User sieht es nur nach einem gewöhnlichen “Häckchen” aus.

      Lg

    2. Tobias hat es ja bereits gesagt, das Google Captcha arbeitet im Hintergrund und verhält sich entsprechend. Wenn Du z.B. mit Google eingeloggt bist, musst du meist nur einen Haken setzen, im Gegensatz zu nem privaten Tab oder nen Script. Ich sehe da derzeit leider keine Möglichkeit.

  23. Wie es aussieht, hat HE das KIS-Login nochmal überarbeitet und heute veröffentlicht. Ich hab zwar keine großen Hoffnungen, aber wie es auf den ersten Blick aussieht, gibt es kein ReCaptcha mehr…

      1. Sehr viel besser scheint das jetzt allerdings auch noch nicht zu sein…
        Die Anmeldung findet via Ajax statt, irgendeine Art von Verifizierung scheint da im Hintergrund zu laufen.

        Nachdem dann wohl ein Cookie-File erzeugt wird, sodass man bei der nächsten Anmeldung direkt im KIS landet, hab ich versucht, das Cookie-File zu exportieren und direkt ins Skript laufen zu lassen. Hat aber leider nicht geklappt… 🙁

        1. Ich habe mir auch mal den neuen Login angeschaut, aber das ist schon etwas spezielles. Kein einfaches Formular, welches man ausfüllt. Blöd.

          1. Ich würde mich auch sehr über eine aktualisierte (PHP) Version des Upload Skriptes freuen, damit mein Cron Job wieder vollautomatisiert die Webseiten aktuell halten kann 😉

          2. Hallo Eiko,

            gute Neuigkeiten, ein neues Upload-Script ist jetzt verfügbar, damit funktioniert der automatische Upload wieder. 🙂

            Gruß
            Andy

          3. Sensationell! Vielen Dank für dieses Update!!! Ich hab’s erst jetzt gesehen, aber soeben adaptiert, alles funktioniert (zumindest für den Moment) wieder vollautomatisch! 🙂

  24. Hallo Andy,

    danke fürs Update!
    Ich sehe dass hier immer fullchain und domain_key hochgeladen werden.
    Der Builder würde aber auch das Zwischenzertifikat (ca) generieren, bzw. könnte man dies im KIS hinterlegen.

    Bei den SSL-Checks sowie bestimmten Android Versionen wird andernfalls teilweise ein Fehler angezeigt.
    Was meinst du ?

    Lg Tobias

    1. Servus Tobias,

      hast Du ein Beispiel wo ich das checken kann? Ich hatte bisher immer die fullchain.pem verwendet. Hatte mal die andere Datei verwendet, glaube nur die cert.pem und hatte damit Probleme, hier wurde dann kurzfristig im Firefox ein SSL-Fehler angezeigt.

      Gruß
      Andy

  25. Hi Andy,
    danke für die rasche Antwort.
    Habe dies aktuell hier “nachgestellt” https://www.ssllabs.com/ssltest/analyze.html?d=shop.polz-garten.at&latest

    Die Android Version weis ich leider nicht mehr.
    Weiters hatte ich es bei einem WordPress Plugin dass über eine REST-API Aufrufe durchgeführt hatte.
    Siehe: https://wordpress.org/support/topic/the-plugin-will-not-be-able-to-receive-reviews-because-rest-api-is-disabled-3/#post-10756535

    Hier war die Lösung das CA.
    Ich habe es im Upload-Script einfach dazu gehängt.

    Lg

    1. Hi Tobias,

      dem CA-Feld habe ich bisher gar keine Beachtung geschenkt. Welche Datei hast Du da genau mit hochgeladen?
      Kannst Du mir die Scriptänderung mal zuschicken, dann baue ich das mit ins Download-Script hier ein.

      Gruß
      Andy

      1. Hi Andy,
        sorry für die späte Rückmeldung:
        Die Pfade sind ein wenig auf meine Anforderungen abgestimmt, aber ich glaub man sieht das wesentliche ganz gut.

        if(function_exists(‘curl_file_create’)) {
        $post[2][‘certfile’] = curl_file_create(__DIR__ . ‘/domains/’.$dir.’/cert.pem’);
        $post[2][‘keyfile’] = curl_file_create(__DIR__ . ‘/domains/’.$dir.’/domain_key.pem’);
        $post[2][‘cafile’] = curl_file_create(__DIR__ . ‘/domains/’.$dir.’/chain.pem’);
        }
        else {
        $post[2][‘certfile’] = ‘@’ . __DIR__ . ‘/domains/’.$dir.’/cert.pem’;
        $post[2][‘keyfile’] = ‘@’ . __DIR__ . ‘/domains/’.$dir.’/domain_key.pem’;
        $post[2][‘cafile’] = ‘@’ . __DIR__ . ‘/domains/’.$dir.’/chain.pem’;
        }

  26. Hallo,
    Florian hatte das Problem :Failed to verify challenge after 10 tries und vermutet, dass ein Zertifikat erst nach 60 Tagen wieder erneuert werden kann. Ich habe jetzt die selbe Meldung erhalten. Stimmt das mit den 60 Tagen oder liegt ein anderer Fehler vor. Die Rechte sind wohl OK. Ich kann während der Validierung über die Browseroberfläche auf die Datei zugreifen.

    Gruß

    Guido

    1. Servus, also 60 Tage kann nicht sein. Ich weiß nicht, ob es ein Limit gibt, aber das dürfte eher im Bereich von Stunden liegen. Die Fehlermeldung deutet darauf hin, dass kein Zugriff möglich ist. Kann aber leider nicht sagen woran das liegen könnte.

      mfg
      Andy

  27. Hallo,
    ich muss mich nochmal melden. Ich habe einen Versuch mit nur einer Domain gestartet. Die Validierung läuft dort durch. Danach erscheint der Fehler:
    .Error: Could not load domain key: domain_key.pem error:0906D06C:PEM routines:PEM_read_bio:no start line
    Die Datei liegt im Ordner, indem die Dateien kis usw liegen. Ich habe den Inhalt der domain_key.pem manuell auf zerossl.com eingefügt Der Inhalt wird dort als korrekt erkannt.

    Gruss

    Guido

  28. Der Pfad ist Richtig eingestellt.
    der Fehler kommt allerdings beim ausführen der myletsencrypt.sh Das sieht dan so aus

    Simulating challenges:
    Testing: http://www.xxxx.com…OK
    Validating domains:
    Validating: http://www.xxxxxx.com…OK [Zahlen und Buchstaben]
    Generating Certificate Signing Request (CSR)…Error: Could not load domain key: domain_key.pem
    error:02001002:system library:fopen:No such file or directory

    1. Ist wohl nicht mein Tag heute. Erst zwei mal gepostet und dann die falsche Fehlermeldung. Hier die Richtige:

      Simulating challenges:
      Testing: http://www.xxxxxx.com…OK
      Testing: xxxx.com…OK
      Validating domains:
      Validating: http://www.xxxxxx.com…OK [Viele Zahlen]
      Validating: xxxxx.com…OK [Viele Zahlen]
      Generating Certificate Signing Request (CSR)…Error: Could not load domain key: domain_key.pem
      error:0906D06C:PEM routines:PEM_read_bio:no start line

      1. Sorry sagt mir nix, aber vielleicht kann jemand anderes helfen. Es liest sich so, als ob mit dem Domain Key was nicht stimmt und falscher Inhalt drinnen ist.

      2. Bekomme genau die gleiche Fehlermeldung:

        Validating: xxx.de…OK [2a01:488:42:1000:b24d:6c2c:fff8:5010]
        Generating Certificate Signing Request (CSR)…Error: Could not load domain key: domain_key.pem
        error:0906D06C:PEM routines:PEM_read_bio:no start line

        Hat dieses Problem schon mal jemand gehabt und es lösen können?

        1. So, jetzt antworte ich mir mal selber, denn ich habe mein Problem gelöst. Ich hatte die falsche Datei zur domain_key.pem gemacht. Falls noch wer das Problem hat, dann bitte den Zero-SSL-Prozess nochmal manuell bis zum Ende durchführen und dann auch die richtige Datei “domain-key.txt” zur “domain_key.pem” umbenennen und für das Skript verwenden.

  29. Hallo Andy,

    danke schonmal für die tolle Arbeit!

    Ich habe heute versucht, die Skripte bei mir zum Laufen zu bringen.

    Das CertLE.php läuft super, allerdings hat das certificate_upload.php keinen Effekt, obwohl es m.E. keinen wirklichen Fehler wirft (ausser ein paar Warnings substr_count betreffend), ausserdem gibt es ein json {“success”:true}.
    Das Zertifikat bleibt allerdings das alte, wenn ich es per Kis hochlade, wird es upgedated.

    Gibt es da eventuell wieder ein Update Seitens HE?

    Danke schonmal
    Haro

    1. Bei mir hat es vor kurzem noch geklappt. Ich sehe auch keine Änderung von Seiten Hosteurope. Ich teste das bei Gelegenheit aber nochmal.

      1. Okay, danke. Freitag gab es bei HE gerade, als ich das Skript testen wollte, einen Ausfall des kis für zwei Stunden. Wer weiß 😏

        Ich werde diesen Freitag nochmal genauer testen. Ich melde mich, wenn ich das Problem finde.

        Vielleicht noch eine Frage:
        Irgendeine Idee, wie die URLs ermittelt wurden? Ich habe gesehen, dass zumindest der tatsächliche Upload im Pfad ein /api/ stehen hat, das konnte ich im Netzwerkmonitor im Browser beim manuellen Upload nicht wiederfinden.

          1. Hi, es funktioniert definitiv.
            Es wird allerdings immer das global Zertifikat abgedatet. Läuft die Seite bei dir vielleicht unter einem anderen Zertifikat?

  30. Also ursprünglich konnte man mit dem Script auch alle anderen Domains austauschen.
    Habe die ID auch in den Einstellungen angepasst, aber es wird nicht hochgeladen (?).

    Vielleicht probiere ich es nochmal.

    Viele Grüße

  31. Hi,
    danke für die super Anleitung!! Bei mir funktioniert das aktuelle Script leider nicht. Der Output sieht danach aus, als ob es nur bis zu dem Ladescreen beim Login kommt. Hat noch jemand das Problem?

    1. Dito. Vor ein paar Tagen hat es noch problemlos funkioniert…
      Ich fürchte, da hat HE schon wieder was am Login-Prozedere geändert.
      Ich erhalte folgende Rückmeldung beim eigentlichen Login:
      {“name”:”SsoError”,”code”:8020,”message”:”Recaptcha is required for login”}
      Das verheißt nichts Gutes…

      1. Leider hat Hosteurope das Login wieder mit einem Captcha gesichert. Das Captcha ist unsichtbar, aber mit einem Script lässt es sich nicht aushebeln.
        Bitte schreibt alle an den Support von Hosteurope, dass ihr unbedingt einen Zugang zum KIS mit Scripts benötigt. Vielleicht hat es einen Effekt, wenn viele Anfragen kommen.
        In Bälde kommt eine neue Version des Scripts, die die Zertifikatsdateien per Email verschickt, dann wird man zumindest an den Upload erinnert und das Hochladen geht etwas schneller.

        1. HostEurope antwortet komplett nicht-zufriedenstellend:
          Leider müssen wir Ihnen mitteilen, dass es seitdem wir Google Recaptcha auf der Loginseite verwenden, nicht mehr möglich ist, per Skript auf das KIS zuzugreifen.

          1. Bei mir ähnlich, ich habe nachgefragt, wann/ob eine Umsetzung von LetsEncrypt geplant sei. Antwort:
            “Es ist nicht geplant, Let’s Encrypt-Zertifikate automatisiert erzeugen und einbinden zu lassen.”

            Machen wir uns kurzfristig mal keine Hoffnungen. Ich empfehle trotzdem jedem Kunden sich an den Support zu wenden, wenn es genug Leute tun, wird es hoffentlich ein Umdenken geben. Sehr schade, da Hosteurope ansonsten ein Top-Provider ist.

          2. Ich mag/mochte HostEurope eigentlich auch ganz gerne, aber so ein Verhalten zwingt mich leider zum Wechsel. Bye.

  32. Danke für die super Anleitungen! Die manuell Erstellung hat bei mir soweit geklappt, aber bei der automatischen Erneuerung erhalte ich gleich zu Beginn eine Fehlermeldung. PHP Einstellungen im KIS sind wie oben vorgeschlagen…

    Warning: rmdir(/is/htdocs/wpXXXXXXX_XXXXXXXXX/www/test_8.7/.well-known): Operation not permitted in /is/htdocs/wpXXXXXXX_XXXXXXXXX/www/test_8.7/LE.inc.php on line 247
    Error: request error: http://test.org/.well-known/acme-challenge/5c8127ef8cbab
    rmdir(/is/htdocs/wpXXXXXXX_XXXXXXXXX/www/test_8.7/.well-known): Operation not permitted

    Was ist hier das Problem?

  33. Das ist echt so unverschämt von Host-Europe.
    Es ist doch offensichtlich, dass es pure Absicht ist, um mehr Geld mit den SSL-Zertifikaten zu verdienen!

  34. Hallo Andy,

    ich bin auf dem Gebiet ein Laie und auch etwas schwerfällig.☺️
    Habe mich heut mal an das Script herangewagt. Dazu habe ich ein paar Fragen. Würde mich freuen, wen du mir diese beantwortest. Danke im voraus.

    1. Ich habe 3 Domains:
    Eine Domain geht direkt über das Zertifikat von Hosteurope. Zwei Domains mit dem LetsEncrypt Zertifikat.
    Muss ich jetzt in jeden Ordner (1. Domain, 2. Domain) der zwei Domains den Ordner mit dem Script und den Ordner well-known anlegen?

    2. Mit was muss ich mich per ssh einloggen um das Script “myletsencrypt.sh” zu testen?

    3. Ist das so richtig für zwei Domains ?
    cd ~/cron/letsencrypt

    /usr/bin/env php7.2 CertLE.php cert account_key.pem domain_key.pem \
    -w /is/htdocs/wp111111111111/www/jahnwerbung.de/ \
    -d jahnwerbung.de \
    -d http://www.jahnwerbung.de \
    -w /is/htdocs/wp222222222222222222/www/jahnfoto.de/ \
    -d http://www.jahnfoto.de \
    -d jahnfoto.de \
    –csr csr.pem \
    –cert cert.pem \
    –chain chain.pem \
    –fullchain fullchain.pem

    4. Hosteurope hat inzwischen php 7.3 laufen. Muss das Script einfach nur von 7.2 auf 7.3 geändert werden?

    Gruß Klaus

    1. Hallo Klaus,
      in jeden Ordner in welchen sich eine Homepage befindet, muss ein .well-known Ordner hinein. Du musst also zwei Ordner anlegen. Einmal unter dem jahnwerbung.de Verzeichnis und einmal im jahnfoto.de Verzeichnis.

      Der Rest sieht soweit gut aus. Ansonsten meldet das Script ja auch die Fehler. Um Dich mit SSH einzuloggen, brauchst du die SSH-Zugangsdaten, die findest Du hoffentlich im KIS. Zu Punkt 4. PHP 7.2 geht weiterhin, hier brauchst Du erstmal nichts zu ändern.
      Gruß
      Andy

  35. Danke für deine Antwort.

    Mit welcher Software loggst du dich mit den SSH-Daten ein? Ich steh etwas auf dem Schlauch. Wollte das myletsencrypt.sh testen.

    Gruß Klaus

      1. Ich arbeite mit Apple und bin auch nicht so ganz firm in der Materie.
        Muss mal schauen, wie ich das Script “myletsencrypt.sh” noch testen kann? Wo kann ich mich einlesen, wie ich ssh Scripte noch prüfen kann?

        1. Was möchtest Du genau testen? Wirklich testen kannst Du es nur online. Passieren kann da nicht soviel, das Zertifikat wird nicht gleich hochgeladen bzw. wenn etwas nicht stimmt, dann kommt eine Fehlermeldung.

  36. Hallo,
    leider komme ich nicht weiter, nach Aufruf von ./myletsencrypt.sh
    bekomme ich folgende Fehler:
    Error in GnuTLS initialization: Failed to acquire random data.
    Simulating challenges:
    Testing: meineDomain.de…
    Warning: rmdir(/is/htdocs/wp1111111/www/wordpress/.well-known/acme-challenge/): Operation not permitted in /is/htdocs/wp1111111/www/le/LE.inc.php on line 246

    Warning: rmdir(/is/htdocs/wp1111111/www/service/it/wordpress/.well-known): Operation not permitted in /is/htdocs/wp1111111/www/le/LE.inc.php on line 247
    Error: request error: http://meineDomain.de/.well-known/acme-challenge/5d3b301e3a6f6
    rmdir(/is/htdocs/wp1111111/www/wordpress/.well-known): Operation not permitted
    Error in GnuTLS initialization: Failed to acquire random data.

    Fatal error: Uncaught Error: Class ‘PHPMailer\PHPMailer\Exception’ not found in /is/htdocs/wp1111111/www/le/PHPMailer.php:2832
    Stack trace:
    #0 /is/htdocs/wp1111111/www/le/certificate_upload.php(173): PHPMailer\PHPMailer\PHPMailer->addAttachment(‘/is/htdocs/wp11…’, ‘fullchain.pem’)
    #1 /is/htdocs/wp1111111/www/le/certificate_upload.php(39): sendCertificate()
    #2 {main}
    thrown in /is/htdocs/wp1111111/www/le/PHPMailer.php on line 2832

    Kann jemand weiter helfen?
    Gruß Rolf

    1. Hi, was für ein Webhosting-Paket hast Du genau? Welcher Tarif. Die ersten Fehler sind nur Warnungen, aber der GnuTLS-Fehler?! Der verursacht denke auch den letzten Fehler, das Zertifikat wurde nicht erstellt und kann so auch nicht gemailt werden.

  37. Hallo zusammen, ich wollte heute das Skript in Betrieb nehmen.
    Die Anleitung ist ja schon etwas älter; daher gehe ich davon aus dass in der certificate_upload.php das das $homedir nicht mehr angepasst werden muss? Die Variable gibt es zumindest nicht mehr.

    Ich habe dann das Skipt in Putty ausgeführt, und das kam als Fehler. In Zeile 3 von myletsencrypt.sh wird in den Ordner “cron/letsencrypt” gewechselt, der war in dem Zip-File aber gar nicht vorhanden. Was mache ich falsch? Vielen Dank im Voraus 🙂

    ./myletsencrypt.sh: line 3: cd: /is/htdocs/wp123456_04K72G1ZO8/cron/letsencrypt: No such file or directory
    Error in GnuTLS initialization: Failed to acquire random data.
    Error: Could not load account key: account_key.pem
    error:02001002:system library:fopen:No such file or directory
    Error in GnuTLS initialization: Failed to acquire random data.

    Fatal error: Uncaught Error: Class ‘PHPMailer\PHPMailer\Exception’ not found in /is/htdocs/wp123456_04K72G1ZO8/ssl/PHPMailer.php:2832
    Stack trace:
    #0 /is/htdocs/wp123456_04K72G1ZO8/ssl/certificate_upload.php(172): PHPMailer\PHPMailer\PHPMailer->addAttachment(‘/is/htdocs/wp10…’, ‘fullchain.pem’)
    #1 /is/htdocs/wp123456_04K72G1ZO8/ssl/certificate_upload.php(39): sendCertificate()
    #2 {main}
    thrown in /is/htdocs/wp123456_04K72G1ZO8/ssl/PHPMailer.php on line 2832

    1. Hallo,

      sorry komme erst jetzt dazu zu antworten. Hast Du die aktuelle Version am Ende heruntergeladen?

      ./myletsencrypt.sh: line 3: cd: /is/htdocs/wp123456_04K72G1ZO8/cron/letsencrypt: No such file or directory

      Diese Meldung kannst Du ignorieren. Die Zeile werfe ich noch raus. Anpassungen in der certificate_upload.php dienen auch nur noch für den E-Mail-Versand. Die Generierung sollte dennoch funktionieren.

      Mit dem GNUTls, puhh schwierig, da kann vermutlich nur Hosteurope weiterhelfen. Deswegen klappt in jedem Fall die Generierung der Zertifikate nicht, was dann zum Fehler von PHPMailer führt. Der Upload direkt ins KIS funktioniert ja nicht mehr, daher bekommt man die Zertifikate normalerweise per E-Mail.

      Gruß
      Andy

  38. Hallo zusammen,

    mal eine blöde Frage.. Wenn ich mehrere Domains über das Script aus dem selben Ordner heraus bearbeiten möchte, also indem ich .myletsencrypt-DomainA.sh, DomainB.sh, etc. erstelle, wird ja immer die gleiche account_key.pem und domain_key.pem verwendet. Das scheint zu einem Fehler bzw. Problem zu führen, nämlich einer unvollständigen Chain. (Qualys SSL sagt: This server’s certificate chain is incomplete. Grade capped to B.)

    Kann man das umgehen? Oder mache ich etwas falsch?

    Ich hoffe ihr versteht das Problem!

    Danke! Und danke auch an Emile und Andy für das Script 🙂

    Liebe Grüße

    1. Welche Datei lädst Du hoch? Ich verwende immer die fullchaim.pem und die domain_key.pem, mit der anderen Datei hatte ich auch Probleme mit der unvollständigen Chain.
      Gruß
      Andy

      1. Lieber Andy,

        ich kann wiedermal einfach nur Danke sagen. Es lag tatsächlich an der Datei.

        Weiterhin alles Gute!!

        Viele Grüße und ein tolles Wochenende
        Noel

  39. Hallo
    gibt es auch ein ZIP Download, für die Dateien welche allu UPDATES enthält?
    ich habe vor, dies neu einzurichten und müsste dann alle Updates einzeln einspielen und konfigurieren.

    1. Du musst nur die letzte Datei herunterladen, diese enthält das gesamte Script in der aktuellen Version. Die älteren Versionen sind nur zur Referenz noch downloadbar.

  40. Hallo,
    leider bin ich in der Materie nicht so bewandert. Das Script läuft bei mir super.
    Jetz habe ich folgende Info bekommen.

    According to our records, the software client you’re using to get Let’s Encrypt TLS/SSL certificates issued or
    renewed at least one HTTPS certificate in the past two weeks using the ACMEv1 protocol.

    Beginning June 1, 2020, we will stop allowing new domains to validate using the ACMEv1 protocol. You should upgrade to an ACMEv2 compatible client before then, or certificate issuance will fail. For most people, simply upgrading to the latest version of your existing client will suffice. You can view the client list at: https://letsencrypt.org/docs/client-options/

    Bedeutet das, dass das Script demnächts nicht mehr nutzbar ist?
    Gruß

    Guido

    1. Hallo Guido,
      die Meldung hatte ich noch nicht, bei mir steht demnächst auch eine Aktualisierung an. Ich prüfe das mal. Denke da muss wirklich was aktualisiert werden.
      Gruß
      Andy

      1. Hallo Eiko, habe gerade nachgeschaut, es ist in der Tat so, dass der Client nicht mehr unterstützt wird und angepasst werden muss.
        Noch ist ja etwas Zeit bis Juni. Ich schaue mal, dass wir bis dahin eine Lösung haben.
        Gruß
        Andy

    2. Hallo Guido, habe gerade nachgeschaut, es ist in der Tat so, dass der Client nicht mehr unterstützt wird und angepasst werden muss.
      Noch ist ja etwas Zeit bis Juni. Ich schaue mal, dass wir bis dahin eine Lösung haben.
      Gruß
      Andy

    1. Ja denke schon, ein Nutzer hat mir ein neues Script zugeschickt. Ich werde es die Tage testen und dann hier zur Verfügung stellen.

  41. Danke für die Darstellung. Bei der Liste anderer Hoster, die das bereits in der Hostingverwaltung unterstützen, mag ich https://all-inkl.com/ nennen, die sind im Bereich shared Hosting von den Angeboten ohnehi recht interessant. In sofern überlege ich, ob ich mir das bei HE antue …

  42. Moin, folgende Grundsatzfrage: werden für 4 verschiedene Webseiten jeweils 4 separate Zertifikate erstellt oder ein „Globalzertifikat“?

    1. Es wird ein Zertifikat erstellt, also Global. Für einzelne Zertifikate kannst Du das Script mehrfach aufsetzen, falls das benötigt wird.

      Gruß
      Andy

  43. Hallo Andy, vielen Dank, sehr gut. Ich kann doch die Erstellung der Zertifikate über PuTTY anstoßen, korrekt? Allerdings kämpfe ich aktuell noch mit der Verbindung zu HE. Bei Host Name kommt doch “ssh.server-he.de” rein, oder?

Kommentar hinterlassen

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