El certificado de LetsEncrypt no se está renovando

Hola a todos. Mi certificado de LetsEncrypt expiró recientemente, el día 4, y todos los intentos de renovarlo han fallado. He leído bastantes publicaciones aquí de personas con problemas similares, pero ninguna de esas soluciones (reconstruir el contenedor, ejecutar comandos de renovación manual, etc.) me ha funcionado.

Siguiendo la sección de solución de problemas de la guía, descubrí un error en mis registros (./launcher logs app):

[Vie 6 dic 17:30:05 UTC 2024] Usando CA: https://acme-v02.api.letsencrypt.org/directory
[Vie 6 dic 17:30:05 UTC 2024] Dominio múltiple='DNS:discourse.[DOMAIN1].org,DNS:discourse.[DOMAIN1].org,DNS:[DOMAIN2].org'
[Vie 6 dic 17:30:05 UTC 2024] Obteniendo token de autenticación de dominio para cada dominio
[Vie 6 dic 17:30:07 UTC 2024] Obteniendo webroot para el dominio='discourse.[DOMAIN1].org'
[Vie 6 dic 17:30:08 UTC 2024] Obteniendo webroot para el dominio='discourse.[DOMAIN1].org'
[Vie 6 dic 17:30:08 UTC 2024] Obteniendo webroot para el dominio='[DOMAIN2].org'
[Vie 6 dic 17:30:08 UTC 2024] Verificando: discourse.[DOMAIN1].org
[Vie 6 dic 17:30:08 UTC 2024] Pendiente, la CA está procesando su pedido, por favor espere. (1/30)
[Vie 6 dic 17:30:12 UTC 2024] Pendiente, la CA está procesando su pedido, por favor espere. (2/30)
[Vie 6 dic 17:30:15 UTC 2024] Pendiente, la CA está procesando su pedido, por favor espere. (3/30)
[Vie 6 dic 17:30:19 UTC 2024] Pendiente, la CA está procesando su pedido, por favor espere. (4/30)
[Vie 6 dic 17:30:22 UTC 2024] Éxito
[Vie 6 dic 17:30:22 UTC 2024] Verificando: discourse.[DOMAIN1].org
[Vie 6 dic 17:30:23 UTC 2024] Éxito
[Vie 6 dic 17:30:23 UTC 2024] Verificando: [DOMAIN2].org
[Vie 6 dic 17:30:23 UTC 2024] Pendiente, la CA está procesando su pedido, por favor espere. (1/30)
[Vie 6 dic 17:30:27 UTC 2024] [DOMAIN2].org:Error de verificación:198.49.23.145: Respuesta inválida de http://[DOMAIN2].org/.well-known/acme-challenge/ohJAvgwBR81O8qmzsMPx-ZnmxoKOPAfuGCz0VZJeFWk: 404
[Vie 6 dic 17:30:27 UTC 2024] Por favor, compruebe el archivo de registro para más detalles: /shared/letsencrypt/acme.sh.log
CN = discourse.[DOMAIN1].org
error 10 en búsqueda de profundidad 0: el certificado ha expirado
error fullchain.cer: verificación fallida

En primer lugar, ¿por qué aparecen dos dominios aquí? Solo necesito un certificado en DOMAIN1, el dominio donde vive nuestra instancia de Discourse. DOMAIN2 es nuestro host de retransmisión SMTP y ya tiene un certificado.

En segundo lugar, el archivo de registro de LetsEncrypt mencionado (/shared/letsencrypt/acme.sh.log) no existe, o al menos no lo encuentro en la ubicación que indica.

Lo más importante, ¿hay alguna manera de hacer que el script deje de mirar DOMAIN2 y simplemente renueve con éxito el certificado en DOMAIN1?

1 me gusta

¿Es esta una instalación estándar? ¿Tiene un proxy inverso?

Estamos ejecutando en una instancia de Digital Ocean, instalada usando su script, pero parece que eso todavía se consideraría una instalación estándar. Cloudflare está gestionando el DNS, pero la nube naranja está desactivada. No existe ningún proxy inverso que yo sepa.

1 me gusta

Esa dirección IP no es discourse. ¿Está roto tu DNS? ¿Tienes varios registros A?

¿Cuál es tu nombre de host?

Correcto. Esa dirección IP pertenece a [DOMAIN2], un dominio diferente que poseemos y que no tiene nada que ver con Discourse, lo que me lleva de vuelta a mi pregunta original de por qué ese dominio y esa IP aparecen en los registros.

DNS funciona bien. Todavía puedo acceder al sitio si omito la advertencia del navegador sobre el certificado caducado. Nuestro otro sitio web que no es de Discourse también funciona perfectamente. Nuestro nombre de host (el de Discourse, no el otro) es discourse.gomomentum.org.

1 me gusta

¡Este fue difícil! No podía encontrar una razón por la que Let’s Encrypt estuviera yendo al host equivocado. Resulta que no siempre es el DNS.

tl;dr: Le dijiste a Let’s Encrypt que obtuviera certificados para tu dominio base además del de Discourse, y luego cambiaste el DNS del dominio base para que apuntara a tu otro sitio.

Y la versión más larga…

Un día, querías que Discourse manejara las solicitudes no solo para discourse.gomomentum.org sino también para gomomentum.org, así que agregaste una sección a tu app.yml como se describe aquí: Set up Let’s Encrypt with multiple domains / redirects

Entonces, las solicitudes de Let’s Encrypt verificaron que ambos dominios originalmente apuntaban a tu servidor Discourse.

Esto explica por qué esas solicitudes para OTRO DOMINIO IBAN a Let’s Encrypt.

Luego, otro día, probablemente años después, pero en algún momento de los últimos 3 meses, alguien decidió que gomomentum.org debía apuntar a tu sitio principal y no más al sitio de Discourse. Y en ese momento, Let’s Encrypt dejó de funcionar, pero los certificados duran 3 meses, por lo que cuando esto sucedió, era casi imposible relacionar el cambio de DNS con el fallo de renovación de este certificado.

Eliminé esa sección de tu app.yml e hice una reconstrucción, ¡y volviste a estar en funcionamiento!

3 Me gusta

:face_palm: De hecho, ahora lo recuerdo, trasteé mucho con las cosas del dominio cuando tuve problemas de correo electrónico hace unos meses. Esto parece ser un efecto secundario no intencionado de todas las conjeturas que hice en ese entonces. ¡Gracias, Jay!

1 me gusta