Esto suena como un problema de tu lado (es decir, de tu sitio web).
El certificado proporcionado por el servidor es correcto y es aceptado por casi todos los navegadores; el problema es que muchos servidores más antiguos no tienen el certificado raíz (relativamente) nuevo en su almacén de confianza, por lo que muchas automatizaciones están generando errores en este momento.
No conozco tu sitio exacto, así que tomé un sitio arbitrario de hosted-by-discourse.com y lo sometí a la Prueba de servidor SSL de Qualys.
Puedes ver que la raíz de la segunda ruta de certificación está realmente expirada, pero esto se mitiga porque el certificado ISRG Root X1 está en el almacén de confianza (es decir, incluido en tu navegador y/o sistema operativo) para la primera ruta de certificación.
Los servidores generalmente no actualizan su almacén de confianza con frecuencia, por lo que es probable que tu servidor no tenga el certificado ISRG Root X1 en su almacén de confianza. (Esto es lo que también ocurrió con la imagen Docker de mail-receiver).
Puedes encontrar un bundle actualizado, por ejemplo, en https://curl.se/ca/cacert.pem. En CentOS, ese archivo se coloca en /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem. En Ubuntu, puedes usar el comando update-ca-certificates, que actualiza /etc/ssl/certs/ca-certificates.crt.
Alternativamente, podrías deshabilitar temporalmente la verificación de certificados SSL en el código de tu servidor.
He publicado la salida de openssl para demostrar que no tiene nada que ver con nuestro sitio web; además, Postman se ejecuta desde una máquina local con Windows.
edición: no tengo tanto conocimiento sobre los diferentes niveles de almacenes de confianza, lo investigaré más. Esto ocurre simplemente en cada máquina que probamos.
esta es una respuesta que recibí de nuestro especialista en DevOps.
El problema es que existen dos copias de ISRG Root X1: una fue emitida por DST Root CA X3 hace mucho tiempo, y la más reciente fue autofirmada por la ISRG (el grupo que, entre otras cosas, gobierna Let’s Encrypt). Esa autoridad de certificación raíz autofirmada ahora es aceptada como una raíz de confianza en la mayoría de los sistemas.
Ambas son el mismo certificado de firma, por lo que puedes validar cualquier cosa que afirme haber sido emitida por «ISRG Root X1» con cualquiera de las dos versiones. Sin embargo, la versión firmada por DST ya no es válida como ruta de certificación, porque el certificado de DST que la firmó ha caducado.
Si el servidor estuviera actuando correctamente y proveyera la versión más reciente de ISRG Root X1 (la autofirmada), el cliente compararía el certificado proveydo con su propio almacén de confianza, verificaría que es el mismo certificado y todo funcionaría. Pero, en su lugar, al ver el certificado proveydo, el cliente piensa: «Ok, necesito validar esto contra DST Root CA X3 que tengo registrado… ¡ups, esa ha caducado!» y falla en la verificación.
Proveer un certificado en la cadena de certificados que se espera que esté en el almacén de CA raíz de confianza está muy lejos de “hacer lo correcto”.
Así que o tu responsable de DevOps está equivocado, o CDCK, LetsEncrypt y Qualys están equivocados.
Dile que actualice el almacén de CA raíz. Eso resolverá el problema. Créeme.
Hola @bpaterson2000, lamentamos saber que tienes problemas para conectarte a nuestro servicio alojado. Como mencionó @RGJ, esto no es un problema de Discourse; debe solucionarse en tu cliente. (Nuestros servidores no «suministran» el certificado raíz; estos son gestionados por tu cliente).
Puedes encontrar más detalles sobre este cambio en Let’s Encrypt aquí:
Gracias por la información; se trata de un problema inesperado para nosotros, ya que los errores aparentemente provenían del servidor alojado.
Utilizamos Heroku, que empaqueta lo que mencionas a través de node/packages, al parecer. Parece que actualizar node fue la clave para volver a conectarlo con éxito a la API REST de Discourse.