LetsEncrypt-Zertifikat erneuert sich nicht

Hallo zusammen. Mein LetsEncrypt-Zertifikat ist kürzlich, am 4., abgelaufen und alle Versuche, es zu erneuern, sind fehlgeschlagen. Ich habe hier einige Beiträge von Leuten mit ähnlichen Problemen gelesen, aber keine dieser Lösungen (Neuerstellung des Containers, Ausführung manueller Erneuerungsbefehle usw.) hat bei mir funktioniert.

Nachdem ich den Fehlerbehebungsabschnitt des Leitfadens befolgt hatte, entdeckte ich einen Fehler in meinen Protokollen (./launcher logs app):

[Fri Dec  6 05:30:05 PM UTC 2024] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Fri Dec  6 05:30:05 PM UTC 2024] Multi domain='DNS:discourse.[DOMAIN1].org,DNS:discourse.[DOMAIN1].org,DNS:[DOMAIN2].org'
[Fri Dec  6 05:30:05 PM UTC 2024] Getting domain auth token for each domain
[Fri Dec  6 05:30:07 PM UTC 2024] Getting webroot for domain='discourse.[DOMAIN1].org'
[Fri Dec  6 05:30:08 PM UTC 2024] Getting webroot for domain='discourse.[DOMAIN1].org'
[Fri Dec  6 05:30:08 PM UTC 2024] Getting webroot for domain='[DOMAIN2].org'
[Fri Dec  6 05:30:08 PM UTC 2024] Verifying: discourse.[DOMAIN1].org
[Fri Dec  6 05:30:08 PM UTC 2024] Pending, The CA is processing your order, please just wait. (1/30)
[Fri Dec  6 05:30:12 PM UTC 2024] Pending, The CA is processing your order, please just wait. (2/30)
[Fri Dec  6 05:30:15 PM UTC 2024] Pending, The CA is processing your order, please just wait. (3/30)
[Fri Dec  6 05:30:19 PM UTC 2024] Pending, The CA is processing your order, please just wait. (4/30)
[Fri Dec  6 05:30:22 PM UTC 2024] Success
[Fri Dec  6 05:30:22 PM UTC 2024] Verifying: discourse.[DOMAIN1].org
[Fri Dec  6 05:30:23 PM UTC 2024] Success
[Fri Dec  6 05:30:23 PM UTC 2024] Verifying: [DOMAIN2].org
[Fri Dec  6 05:30:23 PM UTC 2024] Pending, The CA is processing your order, please just wait. (1/30)
[Fri Dec  6 05:30:27 PM UTC 2024] [DOMAIN2].org:Verify error:198.49.23.145: Invalid response from http://[DOMAIN2].org/.well-known/acme-challenge/ohJAvgwBR81O8qmzsMPx-ZnmxoKOPAfuGCz0VZJeFWk: 404
[Fri Dec  6 05:30:27 PM UTC 2024] Please check log file for more details: /shared/letsencrypt/acme.sh.log
CN = discourse.[DOMAIN1].org
error 10 at 0 depth lookup: certificate has expired
error fullchain.cer: verification failed

Erstens, warum werden hier zwei Domains angezeigt? Ich benötige nur ein Zertifikat für DOMAIN1, die Domain, auf der unsere Discourse-Instanz läuft. DOMAIN2 ist unser SMTP-Relay-Host und hat bereits ein Zertifikat.

Zweitens existiert die von LetsEncrypt erwähnte Protokolldatei (/shared/letsencrypt/acme.sh.log) nicht, oder ich kann sie zumindest nicht an dem angegebenen Speicherort finden.

Am wichtigsten ist: Gibt es eine Möglichkeit, das Skript dazu zu bringen, DOMAIN2 nicht mehr zu berücksichtigen und das Zertifikat für DOMAIN1 erfolgreich zu erneuern?

1 „Gefällt mir“

Ist das eine Standardinstallation? Haben Sie einen Reverse-Proxy?

Wir laufen auf einem Digital Ocean Droplet, installiert mit deren Skript, aber es scheint, dass dies immer noch als Standardinstallation betrachtet werden kann. Cloudflare verwaltet DNS, aber die orangefarbene Wolke ist deaktiviert. Soweit ich weiß, gibt es keinen Reverse-Proxy.

1 „Gefällt mir“

Diese IP-Adresse ist nicht Discourse. Ist Ihr DNS kaputt? Haben Sie mehrere A-Einträge?

Wie lautet Ihr Hostname?

Korrekt. Diese IP-Adresse gehört zu [DOMAIN2], einer anderen Domain, die wir besitzen und die nichts mit Discourse zu tun hat. Das führt zurück zu meiner ursprünglichen Frage, warum diese Domain und IP überhaupt in den Protokollen auftauchen?

DNS funktioniert einwandfrei. Ich kann die Website immer noch aufrufen, wenn ich die Warnung des Browsers bezüglich des abgelaufenen Zertifikats umgehe. Unsere andere Nicht-Discourse-Website funktioniert ebenfalls einwandfrei. Unser Hostname (der Discourse-Hostname, nicht der andere) lautet discourse.gomomentum.org.

1 „Gefällt mir“

Das war eine knifflige Sache! Ich konnte keinen Grund finden, warum Let’s Encrypt zum falschen Host gehen sollte. Es stellt sich heraus, dass es nicht immer DNS ist.

tl;dr: Sie haben Let’s Encrypt angewiesen, Zertifikate für Ihre Bare-Domain zusätzlich zur Discourse-Domain abzurufen, und später die DNS für die Bare-Domain geändert, sodass sie auf Ihre andere Website verweist.

Und die längere Version . . .

Eines Tages wollten Sie, dass Discourse nicht nur Anfragen für discourse.gomomentum.org, sondern auch für gomomentum.org bearbeitet. Daher haben Sie einen Abschnitt zu Ihrer app.yml hinzugefügt, wie hier beschrieben: Set up Let’s Encrypt with multiple domains / redirects

Also prüften die Let’s Encrypt-Anfragen, ob beide dieser Domains ursprünglich auf Ihren Discourse-Server verwiesen.

Dies erklärt, warum diese Anfragen für EINE ANDERE DOMAIN an Let’s Encrypt gingen.

Dann, eines Tages, wahrscheinlich Jahre später, aber irgendwann in den letzten 3 Monaten, entschied jemand, dass gomomentum.org nicht mehr auf Ihre Hauptwebsite, sondern auf die Discourse-Website verweisen sollte. Und zu diesem Zeitpunkt funktionierte Let’s Encrypt nicht mehr, aber die Zertifikate sind 3 Monate gültig, sodass es zu dem Zeitpunkt, als dies geschah, fast unmöglich war, die DNS-Änderung mit diesem fehlgeschlagenen Zertifikats-Erneuerungsversuch in Verbindung zu bringen.

Ich habe diesen Abschnitt aus Ihrer app.yml entfernt und einen Rebuild durchgeführt, und Sie sind wieder im Geschäft!

3 „Gefällt mir“

:man_facepalming: Tatsächlich, ich erinnere mich jetzt, ich habe viel mit den Domain-Sachen herumgespielt, als ich vor ein paar Monaten E-Mail-Probleme hatte. Das scheint ein unbeabsichtigter Nebeneffekt all des Rätselratens zu sein, das ich damals gemacht habe. Danke, Jay!

1 „Gefällt mir“