Jump to content
Froxlor Forum
  • 0

Probleme nach frischer Installation (Debian 12 bookworm, nginx): LE-Zertifikate für Froxlor-Domain


ChrisMuc

Question

Nach einer frischen Installation (auf Debian 12, bookworm) mit Standard-Einstellungen bis auf Nginx statt Apache, hatte ich zunächst das Problem, dass Froxlor nach dem Neustart nicht mehr erreichbar war. Fehlermeldung „502: Bad Gateway“

Scheinbar konnte php_fpm nicht gestartet werden. Ein Blick ins Log (/var/log/php8.2-fpm.log) brachte Klarheit:

22-Dec-2023 20:29:07] ERROR: unable to bind listening socket for address '/var/run/nginx/1-froxlor.panel-domain.de-php-fpm.socket': No such file or directory (2)
[22-Dec-2023 20:29:07] ERROR: FPM initialization failed

Ursache: Das Verzeichnis /var/run/nginx existiert nicht

Lösung: Konfiguration vom systemd-Service anpassen

# In "/lib/systemd/system/nginx.service" unter "[Service]" hinzufügen:
RuntimeDirectory=nginx

 

Jetzt stehe ich noch vor dem Problem, dass LetsEncrypt Zertifikate für die Froxlor-Domain zwar erfolgreich generiert und abgelegt, aber nicht genutzt werden.

Die Zertifikate befinden sich unter /root/.acme.sh/domain.de

In Froxlor selber sind allerdings unter System -> Settings -> SSL-Settings noch /etc/ssl/froxlor_selfsigned.pem, /etc/ssl/froxlor_selfsigned.key und ein leeres Feld für CertificateChainFile hinterlegt. LetsEncrypt ist aktiviert. Und selbst wenn ich die Werte für die Zertifikate anpassen (also auf /root/.acme.sh/domain.de/domain.de.cer|key|...) anpasse und Nginx bzw. den Server neu starte, werden weiterhin die selbst-signierten Zertifikate verwendet.

 

Was habe ich übersehen und falsch gemacht? Wo und wie konfiguriere ich Froxlor so, dass er LE-Zertifikate für die Froxlor-Domain (und am besten auch gleich für die Mail-Dienste) nutzt.

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0
1 minute ago, ChrisMuc said:

n Froxlor selber sind allerdings unter System -> Settings -> SSL-Settings

Das sind auch nicht die (Kunden-)Domain Zertifikate...da brauchst du nichts ändern. Froxlor liest sich die zertifikate von acme.sh selbst in seine DB mittels cronjob.

3 minutes ago, ChrisMuc said:

anpasse und Nginx bzw. den Server neu starte, werden weiterhin die selbst-signierten Zertifikate verwendet.

Nur die Dienste neustarten generiert dir ja nicht die configs neu, dafür musst du bitte den froxlor cronjob ausführen (oder warten bis er läuft).

4 minutes ago, ChrisMuc said:

(und am besten auch gleich für die Mail-Dienste)

Deine Maildienste definieren eine mail-domain (standard ist der froxlor hostname) und das zertifikat dafür kannst du ganz nach deinen wünschen in der postfix und dovecot config nutzen

 

5 minutes ago, ChrisMuc said:

Scheinbar konnte php_fpm nicht gestartet werden. Ein Blick ins Log (/var/log/php8.2-fpm.log) brachte Klarheit:

22-Dec-2023 20:29:07] ERROR: unable to bind listening socket for address '/var/run/nginx/1-froxlor.panel-domain.de-php-fpm.socket': No such file or directory (2)
[22-Dec-2023 20:29:07] ERROR: FPM initialization failed

Ursache: Das Verzeichnis /var/run/nginx existiert nicht

Okay muss ich mir anschauen, ich meine eigentlich das nginx sich das verzeichnis selbst angelegt hat (zumindest früher). Müssen wir ggfls in den defaults anpassen. Du kannst das auch in den Einstellungen nachträglich ändern Settings  » PHP-FPM » FastCGI IPC directory

Link to comment
Share on other sites

  • 0

Vielen Dank für die mehr als schnelle Rückmeldung!

Sorry dass ich mich vielleicht falsch ausgedrückt habe. Es geht mir nicht um die Kunden-Zertifikate. Ich habe noch gar keine Kunden angelegt.

Es geht mir um das Zertifikat für den Froxlor Hostname (ich hatte das Froxlor-Domain genannt). Und dabei hat es leider nicht automatisch funktioniert, dass die zwar korrekt generierten Zertifikate auch automatisch genutzt werden. Hätten diese auch automatisch genutzt werden sollen, oder sind dafür die manuellen Anpassungen über System -> Settings -> SSL-Settings nötig?

Richtig ist, dass ich nach den manuellen Anpassungen nicht auf den Cron-Job gewartet habe. Das probiere ich gleich nochmal aus.

Falls die LE-Zertifikate für den Froxlor Hostname automatisch (also ohne manuelle Anpassungen unter System -> Settings -> SSL-Settings) hätten funktionieren sollen, dann könnte dies daran liegen, dass die Zertifikate auch erst auf den 2. Versuch korrekt generiert wurden. Ich habe den Server mit IPv4 und IPv6 konfiguriert, und unter System -> Settings -> System-Settings war Anfangs als IP-Adresss die IPv6 Adresse ausgewählt. Erst nach Wechsel auf die IPv4 Adresse hat die Zertifikat-Erstellung funktioniert.

Link to comment
Share on other sites

  • 0
12 minutes ago, ChrisMuc said:

Es geht mir um das Zertifikat für den Froxlor Hostname (ich hatte das Froxlor-Domain genannt). Und dabei hat es leider nicht automatisch funktioniert, dass die zwar korrekt generierten Zertifikate auch automatisch genutzt werden. Hätten diese auch automatisch genutzt werden sollen, oder sind dafür die manuellen Anpassungen über System -> Settings -> SSL-Settings nötig?

Schau doch mal in Settings  » Froxlor VirtualHost settings, da ist eigentlich alles relevante für den vhost von froxlor selbst drin.

12 minutes ago, ChrisMuc said:

Falls die LE-Zertifikate für den Froxlor Hostname automatisch (also ohne manuelle Anpassungen unter System -> Settings -> SSL-Settings) hätten funktionieren sollen

Nur wenn du für froxlor auch Let's Encrypt aktiviert hast ....

13 minutes ago, ChrisMuc said:

Erst nach Wechsel auf die IPv4 Adresse hat die Zertifikat-Erstellung funktioniert.

Dann stimmt vllt bei deinem ipv6 setup was nicht...kann ich dir aber nicht genau sagen, kenne dein System nicht. 

Link to comment
Share on other sites

  • 0

Kaum macht man es richtig, geht es auch. 😇

Nachdem ich die Pfade zu den Zertifikaten manuell unter System -> Settings -> SSL-Settings konfiguriert und den Cronjob abgewartet habe, läuft es nun.

vor 4 Minuten schrieb d00p:

Nur wenn du für froxlor auch Let's Encrypt aktiviert hast ....

Ja, das habe und hatte ich aktiviert. Und auch den Hinweis, das eine Re-Konfiguration der http-Dienste notwendig ist, hatte ich befolgt. Aber er hat nicht automatisch die LE-Zertifikate genutzt. Erst durch das manuell Hinterlegen der Pfade (und Warten auf den Cronjob), funktioniert es jetzt.

Vielen Dank nochmal

Link to comment
Share on other sites

  • 0

Das ist aber so nicht wirklich richtig, du sollst die Let's Encrypt Pfade doch nicht in den globalen Einstellungen anpassen, das sind FALLBACK Einstellungen...wenn du in Settings  » Froxlor VirtualHost settings für froxlor Let's Encrypt aktiviert hast, nutzt er es auch.

Link to comment
Share on other sites

  • 0
vor 29 Minuten schrieb d00p:

Das ist aber so nicht wirklich richtig, du sollst die Let's Encrypt Pfade doch nicht in den globalen Einstellungen anpassen, das sind FALLBACK Einstellungen...

Ja, das hatte ich mir auch so gedacht. Daher frage ich so detailliert nach. Habe die Pfade jetzt nochmal zurückgesetzt auf die ursprünglichen Werte. Und schon läuft es wieder mit self-signed Zertifikaten.

Meine Einstellungen unter Settings  » Froxlor VirtualHost settings:

  • Access Froxlor directly via the hostname: aktiviert
  • Domain aliases for froxlor vhost: <leer>
  • Enable Let's Encrypt for the froxlor vhost: aktiviert
  • Enable SSL-redirect for the froxlor vhost: aktiviert

trotzdem geht es nicht automatisch.

Hast du vielleicht noch einen Tipp, was ich prüfen könnte, um der Ursache auf die Spur zu kommen?

Link to comment
Share on other sites

  • 0
vor 12 Minuten schrieb d00p:

wie sieht denn der froxlor vhost aus? (10_froxlor_*.conf)

Ich habe die IP und Domain generalisiert/anonymisiert (111.222.333.444 und domain.de)

# 10_froxlor_ipandport_111.222.333.444.443.conf
# Created 23.12.2023 14:40
# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.

server { 
	listen    111.222.333.444:443 default_server ssl;
	# Froxlor default vhost
	server_name    domain.de;
	access_log     /var/log/nginx/access.log combined;
	include /etc/nginx/acme.conf;
	root     /var/www/html/froxlor/;
	index    index.php index.html index.htm;

	location / {
	}
	location = /lib/userdata.inc.php {
	    deny all;
	}
	location ~ ^/(bin|cache|logs|tests|vendor) {
	    deny all;
	}
	ssl_protocols TLSv1.2;
	ssl_ciphers ECDH+AESGCM:ECDH+AES256:!aNULL:!MD5:!DSS:!DH:!AES128;
	ssl_prefer_server_ciphers off;
	ssl_session_cache shared:SSL:10m;
	ssl_certificate /etc/ssl/froxlor_selfsigned.pem;
	ssl_certificate_key /etc/ssl/froxlor_selfsigned.key;
	location ~ \.php {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		include /etc/nginx/fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $request_filename;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		try_files $fastcgi_script_name =404;
		fastcgi_param HTTPS on;
		fastcgi_pass unix:/var/run/nginx/1-froxlor.panel-domain.de-php-fpm.socket;
		fastcgi_index index.php;
	}
}

Wie der Zeitstempel zeigt, ist diese Datei frisch generiert. Die conf für IPv6 ist analog dazu.

Link to comment
Share on other sites

  • 0
vor 2 Minuten schrieb d00p:

Wird es aufgelistet in Resources -> SSL certificates?

Nein, dort taucht es nicht auf.

vor 2 Minuten schrieb d00p:

Existiert es unter /root/.acme.sh/[froxlor-domain] ? 

Ja, dort gibt es ein entsprechendes Verzeichnis und die Dateien. Diese Dateien hatte ich ja genutzt, als ich die Pfade manuell gesetzt hatte.

vor 4 Minuten schrieb d00p:

Hilfreich ist auch immer den cronjob mal manuell mit debug-flag aufzurufen

schaut auch unauffällig aus:

# /var/www/html/froxlor/bin/froxlor-cli froxlor:cron -fd
Checking froxlor file permissions...OK
Running "tasks" job (forced) (debug)
[information] TasksCron: Searching for tasks to do
[information] Running Let's Encrypt cronjob prior to regenerating webserver config files
[information] Checking for LetsEncrypt client upgrades before renewing certificates:
[Sa 23. Dez 16:03:52 CET 2023] Already uptodate!
[Sa 23. Dez 16:03:52 CET 2023] Upgrade success!
[Sa 23. Dez 16:03:52 CET 2023] Installing cron job
15 4 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
[Sa 23. Dez 16:03:52 CET 2023] Changed default CA to: https://acme-v02.api.letsencrypt.org/directory
[information] No new certificates or certificate updates found
[information] nginx::createIpPort: creating ip/port settings for  [aaaa:bbbb:c:ddd::]:80
[information] nginx::createIpPort: creating ip/port settings for  [aaaa:bbbb:c:ddd::]:443
[information] nginx::createIpPort: creating ip/port settings for  111.222.333.444:80
[information] nginx::createIpPort: creating ip/port settings for  111.222.333.444:443
[information] nginx::writeConfigs: rebuilding /etc/nginx/sites-enabled/
[information] Froxlor\Cron\Http\NginxFcgi::reload: running service php8.2-fpm restart
[information] Froxlor\Cron\Http\NginxFcgi::reload: reloading Froxlor\Cron\Http\NginxFcgi
[notice] Creating passwd file
[notice] Writing 0 entries to passwd file
[notice] Succesfully wrote passwd file
[notice] Creating group file
[notice] Writing 0 entries to group file
[notice] Succesfully wrote group file
[notice] Creating shadow file
[notice] Writing 0 entries to shadow file
[notice] Succesfully wrote shadow file
[notice] Checking system's last guid
Link to comment
Share on other sites

  • 0
Just now, ChrisMuc said:

Nein, dort taucht es nicht auf.

Dann hat froxlor das nicht eingelesen und kennt es nicht, ergo gibts das fallback zertifikat. Versuche es mal mit folgenden steps:

service cron stop
/root/.acme.sh/acme.sh --remove -d [deine-froxlor-domain]
rm rf /root/.acme.sh/[deine-froxlor-domain]
/var/www/html/froxlor/bin/froxlor-cli froxlor:cron -fd
# ... nach dem debuggen cron wieder anschalten
service cron start

Du solltest beim ausführen des crons defintiv eine menge output von acme.sh sehen der das zertifikat sollte neu erstellt werden

Link to comment
Share on other sites

  • 0

MEGA.... das hat geholfen. Nun taucht das Zertifikat auch unter Resources -> SSL certificates auf.

Dann könnte an meiner vorhin geäußerten Vermutung doch etwas dran sein, dass es eine Folge der fehlgeschlagenen Zertifikats-Ausstellung am Anfang ist.

In jedem Fall klappt es nun. Vielen vielen Dank!

Vielleicht ist es hilfreich in der Doku zu erwähnen, dass unter SSL certificates auch das Hostname-Zertifikat zu finden ist/sein sollte. Ausgehend von dem Text dort "Here you can see the currently active ssl certificates froxlor manages. For adding / editing certificates please see Resources -> Domains -> SSL editor" und dann dem Hinweis unter Domains "It's not possible to add a domain currently. You first need to add at least one customer." bin ich davon ausgegangen, dass dort nur die Zertifikate der Kunden-Domains zu finden sind. 

Was sagst Du generell zu meiner Präferenz für nginx? Ist es besser/sicherer/stabiler/... mit Apache, oder ist das irrelevant?

Link to comment
Share on other sites

  • 0
19 minutes ago, ChrisMuc said:

Was sagst Du generell zu meiner Präferenz für nginx? Ist es besser/sicherer/stabiler/... mit Apache, oder ist das irrelevant?

Gibt 10000 vergleiche von Apache zu Beginn, ob besser/stabiler/sicherer/etc.

Wenn du damit klarkommst und alles funktioniert wie es soll: wunderbar. Ist dein Server ;)

Link to comment
Share on other sites

  • 0
vor 4 Minuten schrieb d00p:

Gibt 10000 vergleiche...

Sorry, die Frage war gar nicht so allgemein gemeint. Dachte eher im Kontext von Froxlor. Ohne Froxlor ist meine Präferenz Nginx. Wenn es nun aber so wäre, dass Froxlor primär im Zusammenspiel mit Apache entwickelt und eingesetzt wird, dann würde ich mich doch überzeugen lassen, Apache zu nutzen. 🙂

Gibt es eigentlich einen Troubleshooting Guide oder eine Dokumentation, wie Froxlor verschiedene Dinge intern regelt? Ich denke grad darüber nach, wie ich mein Problem und die Lösung (neben diesem Forum) so aufbereiten könnte, dass andere auch davon profitieren können. 

Bevor ich hier die Frage gestellt hatte, habe ich im Netz und hier im Forum gesucht (zugegeben, nur in Antworten in den letzten Jahren, da ich bei früheren Antworten davon ausgegangen bin, dass diese bei Froxlor 2 nicht mehr ganz zutreffen), habe aber nichts gefunden. Dabei habe ich mich auch gefragt wie Froxlor die Zertifikate verwaltet und ob bzw. wie sich die Verwaltung von Kunden und Hostname-Zertifikat unterscheiden.

Auch ein "bin/froxlor-cli froxlor:validate-acme-webroot" hatte ich laufen lassen; dabei wurden aber keine Hinweise ausgegeben, dass die Hostname Domain zwar im acme aber nicht in der Froxlor Datenbank hinterlegt war.

Link to comment
Share on other sites

  • 0
13 minutes ago, ChrisMuc said:

Wenn es nun aber so wäre, dass Froxlor primär im Zusammenspiel mit Apache entwickelt und eingesetzt wird, dann würde ich mich doch überzeugen lassen, Apache zu nutzen.

Ist es nicht 

13 minutes ago, ChrisMuc said:

Gibt es eigentlich einen Troubleshooting Guide oder eine Dokumentation, wie Froxlor verschiedene Dinge intern regelt? Ich denke grad darüber nach, wie ich mein Problem und die Lösung (neben diesem Forum) so aufbereiten könnte, dass andere auch davon profitieren können

https://docs.froxlor.org

Ist auch auf GitHub und dort darf auch gern erweitert/verbessert/hinzugefügt werden (https://github.com/Froxlor/Documentation)

 

Link to comment
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...