Discourse-Version bei forum.abc.com.au: NICHT GEFUNDEN

Discourse wurde gemäß der offiziellen Anleitung auf GitHub installiert.
Alles verlief gut, aber beim Zugriff auf das Forum tritt ein 502-Fehler auf.

Ich habe die Rails-Produktionsprotokolle überprüft, konnte aber keine Einträge zu production_error oder Sidekiq-Protokollen finden.

Mit tail habe ich Folgendes gesehen:
Creating scope :open. Overwriting existing method Poll.open.
Creating scope :open. Overwriting existing method Poll.open.
Can’t reach ‘/images/welcome/discourse-edit-post-animated.gif’ to get its dimension.

Die Ausführung von discourse doctor ergibt:

Discourse version at forum.abc.com.au: NOT FOUND

Ich habe SSL deaktiviert und neu aufgebaut; danach war das Forum erreichbar.

Es muss ein Problem mit SSL geben, das ich nicht identifizieren kann. Während der SSL-Installation war die IP-Auflösung erfolgreich.

Bitte helfen Sie.

Es klingt so, als hättest du vor der Aktivierung von HTTPS auf unsichere Bilder verlinkt.

@pfaffman Vielen Dank für die Antwort.

Es ist eine frische Installation. Wir können manuell keine Verbindung herstellen.

Nach Durchsicht aller Logs habe ich festgestellt, dass der Fehler bei der Zertifikatsausstellung durch LetsEncrypt liegt. Falls jemand ein ähnliches Problem hat, könnte er/sie unten helfen.

Zuerst sah ich diesen Fehler in den Nginx-Logs:

cannot load certificate "/shared/ssl/forum.abc.com.au.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

Dann habe ich versucht, die SSL-Logs zu prüfen:

forum.abc.com.au:Verify error:CAA record for forum.abc.com.au prevents issuance

Bevor wir das Discourse-Installations-Skript für eine Subdomain ausführen, müssen wir prüfen, ob die Hauptdomain CAA-Einträge hat, und die Zertifizierungsstelle überprüfen. Wenn es sich nicht um LetsEncrypt handelt (in meinem Fall ist der CAA-Eintrag der Hauptdomain comodoca.com), werden Ihre LetsEncrypt-Zertifikate für Discourse nicht ausgestellt.

Lösung: Sie müssen einen CAA-Eintrag für die Discourse-Subdomain hinzufügen, wie hier beschrieben:
Acme:error:caa :: CAA record for ... prevents issuance - Help - Let's Encrypt Community Support

Löschen Sie die alten Zertifikatsdateien und versuchen Sie erneut, die Anwendung neu zu erstellen:

rm -rf /var/discourse/shared/standalone/ssl
rm -rf /var/discourse/shared/standalone/letsencrypt
./launcher rebuild app

Wenn du eine Möglichkeit kennst, diese Datensätze ohne zusätzliche Software zu testen, würde ich in Erwägung ziehen, dass discourse-setup dies prüft, aber so etwas habe ich noch nie gesehen.

Tolle Arbeit, das herausgefunden zu haben!

Es ist eine vernünftige Annahme, dass Sie, wenn Sie eine Domain besitzen und wissen, was CAA ist, in der Lage sind, sie zu konfigurieren und die Implikationen von Let’s Encrypt verstehen.

@pfaffman
dig caa {domain.tld} wird den Datensatz zurückgeben.
Wir möchten zunächst prüfen, ob ein Datensatz zurückgegeben wird.
Anschließend prüfen wir, ob die ausstellende Stelle eine andere als letsencrypt.org ist.

Dies ist jedoch ein sehr seltener Fall. Wir sind uns nicht sicher, ob wir das einbeziehen möchten.

@Stephen

Richtig. Wenn ich eine Domain besitze, weiß ich, was ich damit mache.
Ich habe jemandem geholfen; dieses Problem könnte bei Hosts auftreten, die cPanel verwenden und AutoSSLs über andere Anbieter wie Comodo bereitstellen. Diese fügen beim Erstellen einer Website (WordPress) in cPanel standardmäßig eine Reihe von Einträgen hinzu.

Jedenfalls ist dies ein sehr seltener Fall, ich habe das zum ersten Mal gesehen.

CAA taucht hier gelegentlich auf. Die Standardreaktion, die wir erhalten, wenn wir darauf hinweisen, dass sie die Zertifikatsausstellung für ihre gesamte Domain eingeschränkt haben, ist normalerweise :man_facepalming:t2:

@Stephen

Das ist interessant! Ich muss das prüfen, ich weiß nicht, ob wir die Zertifikatsausstellung für eine vollständige Domäne sperren können.

Gemeint ist die eingeschränkte Zertifikatsausstellung für die gesamte Domäne, also für alle ihre Subdomains?

Wenn Sie einen CAA-Eintrag für @ (die Domain) festlegen, gilt dieser sowohl für die Top-Level-Domain als auch für Subdomains. Sie können dennoch einen spezifischen CAA-Eintrag für sub.domain.com hinzufügen, um beispielsweise für Let’s Encrypt den Geltungsbereich einzuschränken, für den LE ein Zertifikat ausstellen darf.

Also:

domain.com.    CAA   0 issue "comodoca.com"
sub.domain.com.    CAA   0  issue "letsencrypt.org"

Sie können auch issuewild anstelle von issue angeben, um einer Zertifizierungsstelle die Ausstellung eines Wildcard-Zertifikats zu erlauben, sowie iodef, um eine E-Mail-Adresse zu hinterlegen, die bei Verstößen gegen die Richtlinie benachrichtigt wird.

Gleiches Problem hier. Die Befehle haben das Problem nicht gelöst. Ich habe zu Cloudflare DNS und Proxy gewechselt. Das Problem besteht bei mir weiterhin.

Ich habe das mehrmals gemacht und dies nicht erlebt. Aber ich bin definitiv kein Programmierer, kein Experte, kein Experte für alles. Nur ein glücklicher Endbenutzer. Aber das ist frustrierend.

Meine beste Vermutung ist, dass du Cloudflare auf Proxy gestellt hattest und oft genug neu aufgebaut hast, um die Ratenbegrenzungen von Let’s Encrypt zu erreichen, und jetzt eine Woche warten musst, um ein Zertifikat zu erhalten.

Die schnelle und einfache Lösung ist, eine neue Subdomain zu wählen, Cloudflare nur auf DNS einzustellen und neu aufzubauen. Wenn das funktioniert, dann liege ich mit der Ratenbegrenzung richtig und du kannst entweder deine neue Subdomain lieben lernen oder eine Woche warten, bis es dir erlaubt, es erneut zu versuchen.

Ehrliche Frage: Fordert das Neuerstellen jedes Mal ein neues Zertifikat an?

Ich habe mich gerade dasselbe gefragt, ich bin mir bei der Anfrage nicht sicher, aber es scheint kein neues Zertifikat ausgestellt zu werden, wenn eines als gültig befunden wird (habe gerade eine Sandbox neu erstellt)

Das tut es, wenn kein gültiges Zertifikat existiert.