Jump to content
Froxlor Forum
  • 0

Upgrade von 0.9.40.1 auf 0.10.20 / LE / Acme 2.8.6


Question

Nachdem gestern die ersten Zertifikate von Let's encrypt mit Froxlor 0.9.40.1 nicht mehr erneuert wurden, musste ich nun doch auch auf die aktuelle 0.10.20 umsteigen.

Das Setting: Apache 2.4, PHP 5.6 FPM,7.2-7.4 FPM, Dovecot, Postfix, diverse Domains, teilweise nur als Mail-Domains, MySQL 5.7.31. Froxlor läuft mit PHP7.3-FPM.

Nach Backup der Datenbanken und Dateien von Froxlor habe ich den Cron-Dienst mit systemctl cron stop gestoppt und das alte Froxlor in einen Backup-Ordner verschoben und das aktuelle Froxlor in das Domain-Verzeichnis meines Servers abgelegt. Die userdata.inc.php aus dem alten Froxlor/lib ins neue Froxlor/lib kopiert und dann Froxlor aufgerufen.

Froxlor meldet die Notwendigkeit, die Datenbank anzupassen und fragt, ob Domains durch Froxlor verifiziert werden sollen: ja. Upgrade läuft problemlos durch.

Nachdem ich den Cron-Dienst wieder mit systemctl cron start gestartet habe, sind für ein paar Minuten noch alle Domains erreichbar, dann killt Froxlor alle bestehenden SSL-Dateien und stirbt selbst. Apache startet nicht mehr.

Grund: keine SSL-Zertifikate mehr vorhanden. Nach manuellem Ausführen des Master-Cronjob von der Shell aus scheint zunächst auch alles zu funktionieren. Zertifikate wurden von Let's encrypt geholt - aber nicht in den bisherigen Ordner unter /etc/ssl/froxlor-custom/sub.domain.crt abgelegt sondern in einen Unterordner mit dem jeweiligen Domainnamen. Die Dateinamen der Zertifikate lauten wie bisher auf .crt .Dann scheitert alles weitere. Die Zertifikate werden nicht gefunden, die vHosts nicht angelegt. Apache2 startet zwar, aber nur mit den normalen vHosts. Die SSLs sind weg. Also das Script erneut aufgerufen mit Zusatz --verbose und in ein Logfile geschrieben (Usernamen, IPs und Domainnamen geändert):

/usr/bin/php7.3 -q /customers/web/example/kap.example.de/scripts/froxlor_master_cronjob.php --tasks

[Mo 10. Aug 14:33:00 CEST 2020] It is recommended to install socat first.
[Mo 10. Aug 14:33:00 CEST 2020] We use socat for standalone server if you use standalone mode.
[Mo 10. Aug 14:33:00 CEST 2020] If you don't use standalone mode, just ignore this warning.

Nach diversen Fehlermeldungen also schnell noch socat installiert mit:

apt install socat

Dann erneut das Script aufgerufen

/usr/bin/php7.3 -q /customers/web/example/kap.example.de/scripts/froxlor_master_cronjob.php --tasks --force --debug
 

[information] TasksCron: Searching for tasks to do
[information] TasksCron: Task10 started - setting filesystem quota
[information] Running Let's Encrypt cronjob prior to regenerating webserver config files
[information] Checking for LetsEncrypt client upgrades before renewing certificates:
[Mo 10. Aug 14:49:42 CEST 2020] Installing from online archive.
[Mo 10. Aug 14:49:42 CEST 2020] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Mo 10. Aug 14:49:43 CEST 2020] Extracting master.tar.gz
[Mo 10. Aug 14:49:43 CEST 2020] Installing to /etc/ssl/froxlor-custom
[Mo 10. Aug 14:49:43 CEST 2020] Installed to /etc/ssl/froxlor-custom/acme.sh
[Mo 10. Aug 14:49:43 CEST 2020] Good, bash is found, so change the shebang to use bash as preferred.
[Mo 10. Aug 14:49:44 CEST 2020] OK
[Mo 10. Aug 14:49:44 CEST 2020] Install success!
[Mo 10. Aug 14:49:44 CEST 2020] Upgrade success!
[Mo 10. Aug 14:49:44 CEST 2020] Installing cron job
4 0 * * * "/customers/home/root/.acme.sh"/acme.sh --cron --home "/customers/home/root/.acme.sh" > /dev/null
[information] Requesting 42 new Let's Encrypt certificates
[information] Creating certificate for example.de
[information] Adding common-name: example.de
[information] Adding SAN entry: www.example.de
[information] Validating DNS of example.de
[information] Validating DNS of www.example.de
[debug] https://github.com/acmesh-official/acme.sh
v2.8.6
[Mo 10. Aug 14:49:45 CEST 2020] Domains not changed.
[Mo 10. Aug 14:49:45 CEST 2020] Skip, Next renewal time is: Fr 9. Okt 12:33:15 UTC 2020
[Mo 10. Aug 14:49:45 CEST 2020] Add '--force' to force to renew.
[error] Could not find file 'example.de.cer' in '/etc/ssl/froxlor-custom/example.de/'
[error] Could not find file 'ca.cer' in '/etc/ssl/froxlor-custom/example.de/'
[error] Could not find file 'fullchain.cer' in '/etc/ssl/froxlor-custom/example.de/'
[error] Could not get Let's Encrypt certificate for example.de:

[information] Let's Encrypt certificates have been updated
[information] apache::createIpPort: creating ip/port settings for  1.2.3.4:80
[debug] 1.2.3.4:80 :: inserted listen-statement
[debug] 1.2.3.4:80 :: inserted vhostcontainer
[information] apache::createIpPort: creating ip/port settings for  1.2.3.4:443
[debug] 1.2.3.4:443 :: inserted listen-statement
[debug] System certificate file "" does not seem to exist. Disabling SSL-vhost for "mail.example.de"
[error] mail.lightserve.de :: empty certificate file! Cannot create ssl-directives
[debug] 1.2.3.4:443 :: inserted vhostcontainer
[information] apache::createVirtualHosts: creating vhost container for domain 1, customer ichselber
[debug] System certificate file "" does not seem to exist. Disabling SSL-vhost for "example.de"
[error] rassow.de :: empty certificate file! Cannot create ssl-directives

--- und so sieht es dann auch für alle Domains aus ---

[information] apache::writeConfigs: rebuilding /etc/apache2/sites-enabled/
[information] apache::writeConfigs: rebuilding /etc/apache2/htpasswd/
[information] apache::writeConfigs: rebuilding /etc/apache2/sites-enabled/
[information] Froxlor\Cron\Http\ApacheFcgi::reload: running /etc/init.d/php5.6-fpm reload
[information] Froxlor\Cron\Http\ApacheFcgi::reload: running /etc/init.d/php7.2-fpm reload
[information] Froxlor\Cron\Http\ApacheFcgi::reload: running /etc/init.d/php7.3-fpm reload
[information] Froxlor\Cron\Http\ApacheFcgi::reload: running service php7.4-fpm restart
[information] Froxlor\Cron\Http\ApacheFcgi::reload: reloading Froxlor\Cron\Http\ApacheFcgi
[notice] Checking system's last guid

So endet der erste Durchlauf

Aus irgend einem Grund sucht das Script nicht wie bisher nach .crt -Zertifikaten sondern nach .cer. In den neu erstellten Unterordnern von /etc/ssl/froxlor-custom finden sich aber z.B. /etc/ssl/froxlor-custom/example.de/mail.example.crt. Nach langer, langer Suche bin ich dahinter gekommen, dass das acme-Script /root/.acme.sh/acme.sh die Schuld daran trägt. Bei mir lag dieses in der Version 2.8.6 vor und legte die Zertifikate als .crt an. Nach einem Update auf 2.8.7 läuft das obige Script nun komplett durch und erstellt die Zertifikate mit dem korrekten Dateinamen. Nun sollten die Configs für Apache auch korrekt erzeugt werden, meint man. Aber leider falsch.

[information] TasksCron: Searching for tasks to do
[information] TasksCron: Task10 started - setting filesystem quota
[information] Running Let's Encrypt cronjob prior to regenerating webserver config files
[information] Checking for LetsEncrypt client upgrades before renewing certificates:
[Mo 10. Aug 15:45:22 CEST 2020] Installing from online archive.
[Mo 10. Aug 15:45:22 CEST 2020] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Mo 10. Aug 15:45:23 CEST 2020] Extracting master.tar.gz
[Mo 10. Aug 15:45:23 CEST 2020] Installing to /etc/ssl/froxlor-custom
[Mo 10. Aug 15:45:23 CEST 2020] Installed to /etc/ssl/froxlor-custom/acme.sh
[Mo 10. Aug 15:45:23 CEST 2020] Good, bash is found, so change the shebang to use bash as preferred.
[Mo 10. Aug 15:45:24 CEST 2020] OK
[Mo 10. Aug 15:45:24 CEST 2020] Install success!
[Mo 10. Aug 15:45:24 CEST 2020] Upgrade success!
[Mo 10. Aug 15:45:24 CEST 2020] Installing cron job
4 0 * * * "/customers/home/root/.acme.sh"/acme.sh --cron --home "/customers/home/root/.acme.sh" > /dev/null
[information] Requesting 42 new Let's Encrypt certificates
[information] Creating certificate for example.de
[information] Adding common-name: example.de
[information] Adding SAN entry: www.example.de
[information] Validating DNS of example.de
[information] Validating DNS of www.example.de
[debug] https://github.com/acmesh-official/acme.sh
v2.8.7
[Mo 10. Aug 15:45:25 CEST 2020] Create account key ok.
[Mo 10. Aug 15:45:25 CEST 2020] Registering account
[Mo 10. Aug 15:45:26 CEST 2020] Registered
[Mo 10. Aug 15:45:26 CEST 2020] ACCOUNT_THUMBPRINT='GIEw62wW9oLxZqEaVe-NxhNQKyQbOBDjBWGw8JoZy_c'
[Mo 10. Aug 15:45:26 CEST 2020] Creating domain key
[Mo 10. Aug 15:45:27 CEST 2020] The domain key is here: /etc/ssl/froxlor-custom/example.de/example.de.key
[Mo 10. Aug 15:45:27 CEST 2020] Multi domain='DNS:example.de,DNS:www.example.de'
[Mo 10. Aug 15:45:27 CEST 2020] Getting domain auth token for each domain
[Mo 10. Aug 15:45:30 CEST 2020] Getting webroot for domain='example.de'
[Mo 10. Aug 15:45:30 CEST 2020] Getting webroot for domain='www.example.de'
[Mo 10. Aug 15:45:30 CEST 2020] Verifying: example.de
[Mo 10. Aug 15:45:33 CEST 2020] Pending
[Mo 10. Aug 15:45:44 CEST 2020] Success
[Mo 10. Aug 15:45:44 CEST 2020] Verifying: www.example.de
[Mo 10. Aug 15:45:47 CEST 2020] Success
[Mo 10. Aug 15:45:47 CEST 2020] Verify finished, start to sign.
[Mo 10. Aug 15:45:47 CEST 2020] Lets finalize the order, Le_OrderFinalize: https://acme-v02.api.letsencrypt.org/acme/finalize/einpaarzahlen123456789
[Mo 10. Aug 15:45:48 CEST 2020] Download cert, Le_LinkCert: https://acme-v02.api.letsencrypt.org/acme/cert/einhashwert123456789
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            04:ba:42:aa:c3:e2:99:b0:d4:96:55:e8:44:69:b7:85:a8:e7
        Signature Algorithm: sha256WithRSAEncryption


--- hier folgt das Zertifikat ---

        -----END CERTIFICATE-----
[Mo 10. Aug 15:45:49 CEST 2020] Your cert is in  /etc/ssl/froxlor-custom/example.de/example.de.cer
[Mo 10. Aug 15:45:49 CEST 2020] Your cert key is in  /etc/ssl/froxlor-custom/example.de/example.de.key
[Mo 10. Aug 15:45:49 CEST 2020] The intermediate CA cert is in  /etc/ssl/froxlor-custom/example.de/ca.cer
[Mo 10. Aug 15:45:49 CEST 2020] And the full chain certs is there:  /etc/ssl/froxlor-custom/example.de/fullchain.cer
[error] Could not find certificate-folder '/root/.acme.sh/example.de/'
[error] Could not get Let's Encrypt certificate for example.de:
https://github.com/acmesh-official/acme.sh

 

Und hier folgt dasselbe Problem wie zuvor. Die Zertifikate liegen nun korrekt in den Unterordnern. Warum werden diese nun im Unterordner von /root/.acme.sh/ gesucht?

Bis hierher bin ich in den vergangenen 16 Stunden vorgedrungen.
Nun bitte ich um hilfreiche Tipps, wie und wo ich weiter machen soll.

Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Ich habe den Fehler gefunden.

Meine Ordnerstruktur ist schuld. Meine Partition mit den Serverdaten ist unter /customers eingehängt. Der home-Ordner von root befindet sich im Ordner /customers/home/root. Da manche Programme auf einen /home/-Pfad fixiert sind, gibt es einen Symlink von /home -> /customer/home. Da für den User root der home-Ordner in der Datei /etc/passwd festgelegt ist, existiert kein Ordner /root unterhalb der Root-Partition. Offenbar geht Froxlor aber davon aus, dass der Root-Ordner immer im Stammverzeichnis liegt und findet ihn dann nicht. Also von /root einen Symlink nach /customers/home/root anlegen.

An die Entwickler: bitte prüft die Variable homedir um den Ordner root zu finden.

Danke. Problem behoben.

Markus

Link to post
Share on other sites
  • 0
9 hours ago, Markus Rassow said:

An die Entwickler: bitte prüft die Variable homedir um den Ordner root zu finden.

Das könnte man tun ja...allerdings würd ich mir bei so einem wilden rumsymlinken überlegen ob das so alles sinn der sache ist :) Du kannst sicher verstehen dass ich nicht für jedes spezial-setup stunden an arbeit investiere.

Am einfachsten wäre es an dieser Stelle für dich, die AcmeSh.php Datei entsprechend zu patchen und den pfad zu .acme.sh manuell anzupassen, ist definitiv die bessere Lösung gegenüber /root zu symlinken: https://github.com/Froxlor/Froxlor/blob/master/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php#L33

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
  • Similar Content

    • By logicbloke
      Hi,
      I'm just wondering what the difference is between the following 2 folders:
      Why is froxlor installing acme.sh cron everytime it runs at 3am everyday especially since the 5-min let's encrypt froxlor cron is already in place? Also, all my db config points to /etc/ssl/froxlor-custom for the domains and all keys/certificates inside that folder have a different md5 from the ones under /root/.acme.sh/, so I'm wondering what's with the mismatch? Are we updating certificates for domains twice?
       
      If anyone can shed some more light on this, it will be very much appreciated.
       
      Many thanks!
    • By Yahal
      Hallo,
      ich bin gerade dabei alte Kundenkonten in meiner Organisation zu überprüfen und habe jetzt mit Ärger festgestellt, dass es scheinbar bei Älteren Kundenkonto, erstellt vor 2017, es reihenweise nicht mehr möglich ist, die Domaineinstellungen zu ändern, noch Let's Encrypt zu aktivieren.
      Das System läuft auf Debian 8.11 mit dem Froxlor Apache/2.4.10 (Debian), PHP 5.6.38-0+deb8u1, MySQL 5.5.62-0+deb8u1 , CGI-FCGI , 3.16.0-7-amd64 (x86_64) , 0.9.40.1 (DB: 201809280)
      Beim Update wurden wieder keine Fehler angezeigt, daher weiß ich leider nicht wo nach ich genau suchen soll.
      Des Weiteren sieht es so aus als wäre entweder bei einigen Domains, das Let's encrypt Zertifikat verloren gegangen, oder es wurde nie erfolgreich erstellt. In den Einstellungen der entsprechenden Domains, ist Let's encrypt angehakt, aber es ist kein SSL-Zertifikat vorhanden.
      Da Froxlor jetzt scheinbar ACME v2 unterstützt, über diesen Weg, für alle vorhanden Domains ein Let's encrypt Zertifikat zu erzwingen?
       

    • By megoo
      Hallo, ich habe in Problem mit dem Einrichten von SSL via  Let's Encrypt. Ich nutze
      froxlor 0.9.39.5-1
      Apache/2.2.22 (Debian)
      Ich möchte für alle Domains SSL mittels Let's Encrypt aktivieren. 
      domain1 dafür entsprechend konfigiert. Funktioniert alles.
      domain2 genauso wie Domain1 konfiguriert (gleiche IP:443, Benutze Let's Encrypt an, ServerAlias-Angabe für Domain: www), der Zugriff via https gibt allerdings den Fehler aus: SSL_ERROR_BAD_CERT_DOMAIN
      Der Browser sagt, das Zertifikat gilt nur für folgende Namen: domain1
      domain2 nutzt also das falsche Zertifikate. 
      Die Debug Ausgabe des froxlor master cronjob sagt:
      [Thu Jul 12 13:28:05 2018] [warn] VirtualHost meineip:443 overlaps with VirtualHost meineip:443, the first has precedence, perhaps you need a NameVirtualHost directive
      Ich hab mir die erzeugten conf Dateien in /etc/apache2/sites-enabled angesehen, dort ist keine NameVirtualHost Anweisung erhalten. Diese eingefügt, Apache neu gestartet, funktioniert alles. Nun überschreibt froxlor diese Einstellung wieder, folglich, wieder das oben beschriebene Problem.
      Wie/wo kann ich das in Froxlor einstellen, global? Oder muss ich für jede Domain eine "Eigene vHost-Einstellungen" festlegen?
      Auf einem anderen Server mit Apache 2.4 und der gleichen Vorgehensweise hat alles problemlos mit einer IP und über 10 Domains funktioniert. Und dort steht keine NameVirtualHost directive in den conf Dateien.
    • By Keon
      Hallo alle miteinander,
       
      ich bin derweil dabei mir Froxlor auf einem CentOS7 System zum laufen zu bringen. Hier mal kurz ein kleiner Überblick wie ich aktuell stehe:
      SSH Port ändern, sudo User, NTP, EPEL Release, FirewallD für http, https, ssh mit neuem Port frei, fail2ban für SSH Apache, MariaDB, PHPMyAdmin, mod_ssl inkl. config und self signed cert, Froxlor Grundinstallation, Webserver und SSL Einstellungen Admin Menü, (Pfade, reload Script etc.) IP/Port 443 hinzugefügt, Konfiguration -> CentOS -> sonstiges -> cronjob for froxlor Ebenso habe ich - auch wenn unter "Konfiguration" für "CentOS" nicht vorhanden, die acme.conf angelegt  
      Kommen wir zur Frage:
      Wie bekomme ich hin, dass ich folgende Einstellung setzen kann:
       
      Habe ich noch etwas vergessen? Etwas grundlegendes? Bin normalerweise seit Debian Etch bis Jessie gewöhnt - sammle grad die ersten Erfahrungen mit Froxlor & CentOS nach 2 Jahren Pause aus der Informatik.
       
      Beste Grüße
    • By LukasH
      [Dieses Problem hat sich gelöst, ich hab mich doch tatsächlich verlesen, im Einsatz ist nur die .de, die .com ist nur eine Weiterleitung, klar funktioniert die nicht]
       
      ______________________________________________________________________________
       
      Dann habe ich noch ein weiteres Problem und zwar habe ich eine neue Subdomain angelegt, beim versuch ein SSL Zertifikat zu ziehen kommen nun nur die folgenden Fehlermeldungen:
      [Lets Encrypt self-check] Please check http://www.mail.hoerth.eu/.well-known/acme-challenge/_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI - token seems to be not available. This is just a simple self-check, it might be wrong but consider using this information when Let's Encrypt fails to issue a certificate Could not get Let's Encrypt certificate for mail.hoerth.eu: Verification ended with error: {"identifier":{"type":"dns","value":"www.mail.hoerth.eu"},"status":"invalid","expires":"2018-06-15T12:01:38Z","challenges":[{"type":"dns-01","status":"invalid","uri":"https:\/\/acme-v01.api.letsencrypt.org\/acme\/challenge\/SXa_3IeDJd19Xg3oVtLd0iaj3H2lKBN_fzM1cZPtguc\/5014287643","token":"mOYe0nDwOyTxrfZc83fmpBVeL1vZesbZrV-t_nkRdZ0"},{"type":"http-01","status":"invalid","error":{"type":"urn:acme:error:dns","detail":"DNS problem: NXDOMAIN looking up A for www.mail.hoerth.eu","status":400},"uri":"https:\/\/acme-v01.api.letsencrypt.org\/acme\/challenge\/SXa_3IeDJd19Xg3oVtLd0iaj3H2lKBN_fzM1cZPtguc\/5014287644","token":"_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI","keyAuthorization":"_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI.JriXbK73HFGeqTSIPL3Qg0VCDy2Qt0n4wrUZon9dCEM","validationRecord":[{"url":"http:\/\/www.mail.hoerth.eu\/.well-known\/acme-challenge\/_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI","hostname":"www.mail.hoerth.eu","port":"80"}]}],"combinations":[[0],[1]]} Ich habe dann mal nachgesehen und der Token existiert defintiv nicht - klar findet ihn Lets Encrypt also nicht, was ist denn gerade bei mir Los?
×
×
  • Create New...