Il certificato LetsEncrypt non si rinnova

Ciao a tutti. Il mio certificato LetsEncrypt è scaduto di recente, il 4, e tutti i tentativi di rinnovarlo sono falliti. Ho letto diversi post qui di persone con problemi simili, ma nessuna di quelle soluzioni (ricostruire il container, eseguire comandi di rinnovo manuali, ecc.) ha funzionato per me.

Seguendo la sezione di risoluzione dei problemi della guida, ho scoperto un errore nei miei log (./launcher logs app):

[Ven 6 dic 17:30:05 UTC 2024] Utilizzo CA: https://acme-v02.api.letsencrypt.org/directory
[Ven 6 dic 17:30:05 UTC 2024] Dominio multiplo='DNS:discourse.[DOMAIN1].org,DNS:discourse.[DOMAIN1].org,DNS:[DOMAIN2].org'
[Ven 6 dic 17:30:05 UTC 2024] Ottenimento token di autenticazione del dominio per ogni dominio
[Ven 6 dic 17:30:07 UTC 2024] Ottenimento webroot per dominio='discourse.[DOMAIN1].org'
[Ven 6 dic 17:30:08 UTC 2024] Ottenimento webroot per dominio='discourse.[DOMAIN1].org'
[Ven 6 dic 17:30:08 UTC 2024] Ottenimento webroot per dominio='[DOMAIN2].org'
[Ven 6 dic 17:30:08 UTC 2024] Verifica: discourse.[DOMAIN1].org
[Ven 6 dic 17:30:08 UTC 2024] In attesa, la CA sta elaborando il tuo ordine, attendi. (1/30)
[Ven 6 dic 17:30:12 UTC 2024] In attesa, la CA sta elaborando il tuo ordine, attendi. (2/30)
[Ven 6 dic 17:30:15 UTC 2024] In attesa, la CA sta elaborando il tuo ordine, attendi. (3/30)
[Ven 6 dic 17:30:19 UTC 2024] In attesa, la CA sta elaborando il tuo ordine, attendi. (4/30)
[Ven 6 dic 17:30:22 UTC 2024] Successo
[Ven 6 dic 17:30:22 UTC 2024] Verifica: discourse.[DOMAIN1].org
[Ven 6 dic 17:30:23 UTC 2024] Successo
[Ven 6 dic 17:30:23 UTC 2024] Verifica: [DOMAIN2].org
[Ven 6 dic 17:30:23 UTC 2024] In attesa, la CA sta elaborando il tuo ordine, attendi. (1/30)
[Ven 6 dic 17:30:27 UTC 2024] [DOMAIN2].org:Errore di verifica:198.49.23.145: Risposta non valida da http://[DOMAIN2].org/.well-known/acme-challenge/ohJAvgwBR81O8qmzsMPx-ZnmxoKOPAfuGCz0VZJeFWk: 404
[Ven 6 dic 17:30:27 UTC 2024] Controlla il file di log per maggiori dettagli: /shared/letsencrypt/acme.sh.log
CN = discourse.[DOMAIN1].org
errore 10 a 0 profondità di ricerca: il certificato è scaduto
errore fullchain.cer: verifica fallita

Innanzitutto, perché ci sono due domini visualizzati qui? Ho bisogno di un certificato solo su DOMAIN1, il dominio su cui risiede la nostra istanza Discourse. DOMAIN2 è il nostro host di inoltro SMTP e ha già un certificato.

In secondo luogo, il file di log di LetsEncrypt menzionato (/shared/letsencrypt/acme.sh.log) non esiste, o almeno non riesco a trovarlo nella posizione indicata.

Soprattutto, c’è un modo per far smettere allo script di guardare DOMAIN2 e semplicemente rinnovare con successo il certificato su DOMAIN1?

1 Mi Piace

Questa è un’installazione standard? Hai un proxy inverso?

Stiamo eseguendo su una droplet di Digital Ocean, installata utilizzando il loro script, ma sembra che questa sia ancora quella che considereresti un’installazione standard. Cloudflare sta gestendo il DNS, ma la nuvola arancione è disattivata. Non esiste alcun reverse proxy di cui sono a conoscenza.

1 Mi Piace

Quell’indirizzo IP non è discourse. Il tuo DNS è rotto? Hai più record A?

Qual è il tuo hostname?

Corretto. Quell’indirizzo IP appartiene a [DOMAIN2], un altro dominio che possediamo e che non ha nulla a che fare con Discourse, il che mi riporta alla mia domanda originale sul perché quel dominio e quell’IP compaiano nei log.

Il DNS funziona correttamente. Posso ancora accedere al sito se aggirò l’avviso del browser sul certificato scaduto. Anche il nostro altro sito web non-Discourse funziona perfettamente. Il nostro hostname (quello di Discourse, non l’altro) è discourse.gomomentum.org.

1 Mi Piace

È stata dura! Non riuscivo a trovare un motivo per cui Let’s Encrypt stesse andando all’host sbagliato. Si scopre che non è sempre il DNS.

tl;dr: Hai detto a Let’s Encrypt di ottenere certificati per il tuo dominio bare in aggiunta a quello di Discourse, e successivamente hai modificato il DNS per il dominio bare in modo che puntasse al tuo altro sito.

E la versione più lunga…

Un giorno, volevi che Discourse gestisse le richieste non solo per discourse.gomomentum.org ma anche per gomomentum.org, quindi hai aggiunto una sezione al tuo app.yml come descritto qui: Set up Let’s Encrypt with multiple domains / redirects

Quindi, le richieste di Let’s Encrypt hanno verificato che entrambi quei domini puntassero originariamente al tuo server Discourse.

Questo spiega perché quelle richieste per QUALCHE ALTRO DOMINIO andavano a Let’s Encrypt.

Poi, un altro giorno, probabilmente anni dopo, ma in qualche momento negli ultimi 3 mesi, qualcuno ha deciso che gomomentum.org dovesse puntare al tuo sito principale e non più al sito Discourse. E a quel punto, Let’s Encrypt ha smesso di funzionare, ma i certificati durano 3 mesi, quindi al momento in cui è successo, era quasi impossibile collegare la modifica del DNS al mancato funzionamento di questo rinnovo del certificato.

Ho rimosso quella sezione dal tuo app.yml ed eseguito una ricostruzione e sei di nuovo operativo!

3 Mi Piace

:face_palm: In effetti, ora ricordo, ho armeggiato molto con le cose del dominio quando ho avuto problemi di posta elettronica qualche mese fa. Questo sembra essere un effetto collaterale involontario di tutte le ipotesi che ho fatto allora. Grazie, Jay!

1 Mi Piace