Jump to content
Froxlor Forum
  • 0

Froxlor 0.9.40.1-1 & LetsEncrypt => ACMEv1 End of Support


Question

Hallo,

mein Server läuft (noch) auf einem Debian 8 und daher mit einer etwas abgehangenen Froxlor Version (0.9.40.1-1+jessie1). Mit dieser habe ich Jahren erfolgreich LetsEncrypt implementiert und bisher erfolgreich genutzt. Vor einigen Wochen fing dann ab und an das froxlor_master_cronjob.php Skript einen "Segmentation Fault" zu melden, wenn er den Job "letsencrypt" durchführt. Ich konnte auf den ersten Blick kein Problem erkennen und habe bis heute nichts getan / geändert.

Beim aktuellen Blick auf die Zertifikate ist mir dann aufgefallen, dass diese bald Anfang Juni ablaufen und ich eigentlich längst ein Renewal erwartet hätte und daher ich den Job des Skriptes händisch angestoßen und die Debug Option verwendet:

 

root@server:~# /usr/bin/php5 /var/www/froxlor/scripts/froxlor_master_cronjob.php --letsencrypt --debug
[information] Updating Let's Encrypt certificates
[information] Updating domain.de
[information] Adding SAN entry: domain.de
[information] letsencrypt Using 'https://acme-v01.api.letsencrypt.org' to generate certificate
[information] letsencrypt Using existing account key
[information] letsencrypt Starting certificate generation process for domains
[information] letsencrypt Requesting challenge for domain.de
^C

Das Skript bleibt bei der besagten Stelle einfach stehen und es tut sich nichts mehr. In den Einstellungen ist zb. die ACMEv1 verwendet, was nach Recherchen bald abgeschaltet wird (Quelle: https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430) und dort ist beschrieben:

Quote

Starting at the beginning of 2021 we will occasionally disable ACMEv1 issuance and renewal for periods of 24 hours, no more than once per month (OCSP service will not be affected). The intention is to induce client errors that might encourage subscribers to update to clients or configurations that use ACMEv2. Renewal failures should be limited since new domain validations will already be disabled and we recommend renewing certificates 30 days before they expire.

In June of 2021 we will entirely disable ACMEv1 as a viable way to get a Let’s Encrypt certificate.

Okay, also dachte ich: Einfach auf ACMEv2 umstellen in den Einstellungen und das habe ich gemacht und das dasselbe Cron-Skript wieder gestartet. Der Output war dann ungefähr wie folgt:

root@server:~# /usr/bin/php5 /var/www/froxlor/scripts/froxlor_master_cronjob.php --letsencrypt --debug
[information] Updating Let's Encrypt certificates
[information] Updating domain-nr1.de
[information] Adding SAN entry: domain-nr1.de
[information] letsencrypt-v2 Using 'https://acme-v02.api.letsencrypt.org' to generate certificate
[information] letsencrypt-v2 Using existing account key
[information] letsencrypt-v2 Starting certificate generation process for domains
[information] letsencrypt-v2 Sending signed request to https://acme-v02.api.letsencrypt.org/acme/new-order
[error] Could not get Let's Encrypt certificate for domain-nr1.de: No authorizations received for domain-nr1.de. Whole response: {"type":"urn:ietf:params:acme:error:malformed","detail":"No Key ID in JWS header","status":400}
[information] Updating domain-nr2.de
[information] Adding SAN entry: domain-nr2.de
[information] letsencrypt-v2 Using 'https://acme-v02.api.letsencrypt.org' to generate certificate
[information] letsencrypt-v2 Using existing account key
[information] letsencrypt-v2 Starting certificate generation process for domains
[information] letsencrypt-v2 Sending signed request to https://acme-v02.api.letsencrypt.org/acme/new-order
[error] Could not get Let's Encrypt certificate for domain-nr2.de: No authorizations received for domain-nr2.de. Whole response: {"type":"urn:ietf:params:acme:error:malformed","detail":"No Key ID in JWS header","status":400}
[information] Updating domain-nr3.de
[information] Adding SAN entry: domain-nr3.de
[information] letsencrypt-v2 Using 'https://acme-v02.api.letsencrypt.org' to generate certificate
[information] letsencrypt-v2 Using existing account key
[information] letsencrypt-v2 Starting certificate generation process for domains
[information] letsencrypt-v2 Sending signed request to https://acme-v02.api.letsencrypt.org/acme/new-order
[error] Could not get Let's Encrypt certificate for domain-nr3.de: No authorizations received for domain-nr3.de. Whole response: {"type":"urn:ietf:params:acme:error:malformed","detail":"No Key ID in JWS header","status":400}
[information] Let's Encrypt certificates have been updated

Bevor ich jetzt etwas verschlimmbessere, die Frage:

Wie kann ich mit meiner aktuellen Froxlor Version ACMEv2 nutzen bzw. darauf umstellen?

Danke und viele Grüße.

Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Okay, aktuell erlebe ich wohl die letzte "Brownout Phase" vor der endgültigen Abschaltung der ACMEv1 API:

image.png.352d7b911d2409b590447bfa3816d7bf.png

Quelle: https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430/23

 

Theoretisch sollte ich dann ab heute (je nach Zeitzone) wohl die Zertis nochmal verlängern können mit v1 bzw. ab dem 26.05. nochmal .... Ab Juni bräuchte ich dann wohl eine Migration auf ACMEv2.

Link to post
Share on other sites
  • 0

Ich kann nur raten, auf eine aktuelle froxlor Version zu aktualisieren... 0.9.40 ist aus 2018....

Link to post
Share on other sites
  • 0

Ja, das wäre die naheliegendste Lösung. Aber leider gibt es da einige Abhängigkeiten mit / auf dem Server. Da ist ne alte PHP Version drauf und für die neue bräuchte ich ein aktuelles Debian. Also ein Upgrade auf mindestens Debian 9 etc. pp. Dafür fehlt gerade die Muße und Zeit aktuell (leider).

Daher habe ich die Hoffnung, dass ich das mit ACMEv2 und der alten Froxlor hinbekomme und schauen kann, wo es hakt. Ansonsten stimme ich Dir zu.

Nur vielleicht gibt es noch Tipps, was das Thema sein kann.

 

Link to post
Share on other sites
  • 0

Nimm doch das sury repository da hast du von 5.6 bis 8.0 alle PHP Versionen zur Verfügung

Link to post
Share on other sites
  • 0

PHP lernen, Lets-Encrypt Implementierung entsprechend anpassen, froxlor nutzt da seit Ewigkeiten schon eine ganz andere/neue Implementierung via acme.sh

Link to post
Share on other sites
  • 0

Okay, verstanden. Hätte ja sein können, dass jemand sich mit einer älteren Froxlor Version und der ACMEv2 API beschäftigt hat und mir hier helfen kann. Denn wenn ich das korrekt verstehe, ist die ACMEv2 ja auch in meiner Version unterstützt. Aber irgendwas tut da nicht (siehe oben). Das wäre eher mein Ansatz. Aber ich schaue mal, was ich ggfs. mit PHP reißen kann.

Wer darüber hinaus noch Ideen / Erfahrungen hat: Gerne.

Link to post
Share on other sites
  • 0

Kurzes Update:

ACMEv2 ist in Froxlor 0.9.40.1-1 schon passend eingerichtet und funktioniert auch. ABER: Wenn man vorher ACMEv1 verwendet hat, sind in der Datenbank Felder gesetzt, die das Skript scheitern lassen.

Folgendermaßen konnte ich das Problem für mich erstmal lösen:

In der Datenbank die Tabelle panel_customers suchen. Dort sollte es die Spalten "lepublickey" "leprivatekey" "leregistered" und "leaccount" geben. Für ACMEv2 wird in "leaccount" eine Account-ID (Key-ID) erwartet, die letztlich wie eine URL aussieht. Wenn man ACMEv1 benutzt hat, wird dieses Feld jedoch leer sein. Dafür sind die Felder für den privaten und öffentlichen Schlüssel ("lepublickey" und "leprivatekey") gefüllt und zudem der Wert von "leregistered" auf 1 gesetzt.

Was nun passiert (in meinen Worten) ist, dass Froxlor durch den "leregistered=1" denkt, dass es längst einen Account für den User bei LetsEncrypt gibt und für ein Refresh muss die Account-ID (Key-ID) mitgeschickt werden. Diese ist jedoch leer und daher gibt es die Rückmeldung 

{"type":"urn:ietf:params:acme:error:malformed","detail":"No Key ID in JWS header","status":400}

Dies kann man aus meiner Sicht so umgehen:

  • Setzen von "leregistered=0"
  • Setzen von "lepublickey" UND "leprivatekey" auf NULL

Somit sieht der User für Froxlor "jungfräulich" aus und das Script startet mit dem Erstellen eines neuen Account-Keys, bevor es dann dafür das Zertifkat versucht erstellen zu lassen.

Ich werde erst gegen Ende Mai bei der nächsten Domain, die dann fällig ist, sehe ob das wirklich Abhilfe schafft, aber ich bin zuversichtlich und kann das ganze erstmal so weiter betreiben (wohl wissend, dass ich demnächst mal den Server upgraden muss).

Wenn es dem einen oder anderen hilft, sehr gut. Ansonsten habe ich es für meine Akten hier notiert :)

Viele Grüße

 

Link to post
Share on other sites
  • 0

Kurzes Update: Für den Benutzer, dessen Werte ich zurückgesetzt habe, war heute Nacht ein Update eines Zertifikates fällig und das hat ohne Probleme funktioniert.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...