SSL-Zero-Länge .cer-Datei

Hallo,

Ich versuche, Discourse von der offiziellen GitHub-Seite auf Ubuntu 22.04 Server LTS – von der neuesten AWS AMI – zu installieren. Das Netzwerk ist konfiguriert, mit FQDNS, die an den Host und die Elastic IP angehängt sind.

Alles wird korrekt bereitgestellt, und ich kann eine Verbindung zum Nginx-Instanz auf Port 80 herstellen. Aber ich kann keine Verbindung über Port 443 herstellen, und der wiederholte Fehler in der Nginx error.log lautet wie folgt:

> 2023/10/09 08:41:12 [emerg] 9342#9342: cannot load certificate "/shared/ssl/discourse.xxxx.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

Weitere Untersuchungen zeigen, dass die .cer-Datei null Bytes lang ist und sich befindet in

./shared/standalone/ssl/discourse.XXXX.com.cer

Protokolldatei Container: app:$/var/log/nginx

Ist jemandem dieses Problem schon einmal begegnet? Es scheint kein Berechtigungsproblem zu sein, da alles unter sudo-Anmeldeinformationen ausgeführt wird.

Ich bin hier wirklich ratlos.

EDIT: Ich habe versucht, die Ordner /shared/ssl und letsencrypt zu löschen und sowohl einen Rebuild als auch eine Neuinstallation versucht, beides mit demselben Ergebnis.

Haben Sie discourse-setup ausgeführt? Es versucht, eine Verbindung zu sich selbst herzustellen, um zu überprüfen, ob DNS auf den Server verweist und die Ports geöffnet sind, aber es ist ein grober Test.

Wenn Sie einen Rebuild mehrmals ohne korrekt konfigurierte DNS und Ports ausführen, stoßen Sie auf die Ratenbegrenzungen von Let’s Encrypt. Wenn dies der Fall ist, und ich vermute, dass es so ist, müssen Sie eine Woche warten oder eine andere Subdomain verwenden (oder einigen komplizierten Anweisungen folgen, um ein Zertifikat für die gewünschte Subdomain und eine weitere anzufordern).

Ich denke, wenn Sie docker logs app ausführen, sehen Sie möglicherweise, wo acme beim Abrufen eines Zertifikats fehlschlägt.

Hallo Jason,
Ich bin auf dasselbe Problem gestoßen und es hat Tage und viele Stunden gedauert, bis ich herausgefunden habe, was kaputt war und wie ich es reparieren kann. Ich hoffe, diese Informationen helfen dir und anderen, die auf dasselbe Problem stoßen.

Ich erhielt diese Fehlermeldung während der Ausführung von ./discourse-setup:
** FAILED TO BOOTSTRAP ** bitte scrolle nach oben und suche nach früheren Fehlern

Bei vielen Versuchen, diesen Fehler zu beheben, habe ich Folgendes versucht:
Ich habe ./discourse-doctor ohne Erfolg ausgeführt.
Ich habe ./launcher rebuild app ohne Erfolg ausgeführt.
Ich habe versucht, das Problem innerhalb des Containers zu beheben, indem ich: docker exec -it app /bin/bash verwendet habe.
Das Container-Image verfügt über begrenzte Werkzeuge zur Fehlerbehebung, daher habe ich die Protokolle nur mit diesem Befehl gelesen:
less /var/log/nginx/error.log
Hier sah ich viele Meldungen, die enthielten: [emerg] 2832#2832: cannot load certificate
Aus irgendeinem Grund konnte ich die Ursache nicht finden, aber als ich den Container verließ und Folgendes eingab:
./launcher logs app vom Host aus -
konnte ich mehr Daten sehen und fand plötzlich diesen Fehler:
„Error creating new order :: too many certificates (5) already issued for this exact set of domains in the last 168 hours, retry after 2024-08-10T12:58:12Z:“
Ich habe nach Workarounds für dieses Problem gegoogelt, mich dann aber entschieden, einfach die angegebene Zeit abzuwarten.
Nachdem die Wartezeit abgelaufen war, habe ich Folgendes erneut versucht: ./launcher rebuild app
Dieses Mal hat es funktioniert und die SSL-Zertifikate ( *.cer ) wurden erfolgreich erstellt und meine Website war online.

Die Moral von der Geschichte ist, dass Sie, wenn Sie ein leeres *.cer -Zertifikat erhalten, die Container-Protokolle mit diesem Befehl vom Host aus überprüfen müssen:
root@host:/var/discourse# ./launcher logs app
Scrolle durch die Protokolle und suche nach „too many certificates“
Wenn ich das gewusst hätte, hätte mir das tagelange Recherche ersparen können :frowning:

Annahmen in meiner Antwort:

  • Sie haben bestätigt, dass Ihr Host ordnungsgemäß mit Ihrem DNS-Anbieter konfiguriert ist.
  • Sie haben Ihre Registrierungs-E-Mail und Ihre SMTP-Einstellungen bestätigt.
  • Sie haben bestätigt, dass /var/discourse/containers/app.yml ordnungsgemäß ausgefüllt war.
1 „Gefällt mir“