Errores SSL de correo tras la actualización a 2.4.0.beta4

Desde la actualización a 2.4.0.beta4, ninguna de mis instalaciones que utilizan Rackspace para el correo saliente ha podido enviar correo saliente. Dado que el servidor de correo saliente es, nuevamente, Rackspace, presumo que sus configuraciones SSL/TLS son correctas (y, en cualquier caso, parecen funcionar en todos los clientes de correo principales). Quizás este hilo esté relacionado.

Aunque, tras aplicar las actualizaciones recientes (no estoy seguro de cuál cambio en particular), el error ya no es el mismo que se menciona en el hilo antes mencionado, sino que ahora es este:

Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout con #\u003cTCPSocket:(closed)\u003e

Presumo que esto es un error.

Edición: Otro hilo relacionado

\u003csmall\u003e@Gerhard\u003c/small\u003e

¿Puedes intentar conectar con el servidor SMTP desde dentro del contenedor Docker?

SMTP con StartTLS (predeterminado, a menos que hayas modificado DISCOURSE_SMTP_ENABLE_START_TLS en app.yml):

openssl s_client -connect <hostname>:<port> -starttls smtp

SMTP

openssl s_client -connect <hostname>:<port>

Con la bandera -starttls, simplemente devuelve “CONNECTED”. Sin -starttls:

root@omnifora-com-app:/var/www/discourse# openssl s_client -connect secure.emailsrvr.com:465
CONNECTED(00000003)
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
verify return:1
139636332590208:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../ssl/statem/statem_clnt.c:2156:
---
Cadena de certificados
 0 s:OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
   i:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
 1 s:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
   i:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
 2 s:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
   i:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
 3 s:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
   i:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
---
Certificado del servidor
-----BEGIN CERTIFICATE-----
MIIG5jCCBc6gAwIBAgIRAMWoQ0lmf1VC8Ch8zZZTHm0wDQYJKoZIhvcNAQELBQAw
gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYD
VQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIg
Q0EwHhcNMTkwMTEwMDAwMDAwWhcNMjAwMzEwMjM1OTU5WjBZMSEwHwYDVQQLExhE
b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFTATBgNVBAsTDEVzc2VudGlhbFNTTDEd
MBsGA1UEAxMUc2VjdXJlLmVtYWlsc3J2ci5jb20wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDZzFpkI/ujPCuNZpHLueu+/iqUsc5U7+yYa9d6xIbkh2BN
u+OpBNCTn4ACa0a3EaqRVyceUUh8TodUPtkZYLZO6iqwl2eOd8h3NXxtRlyaj0Hz
uSOlRbA5CiVZ4H1Ia8k/DVh+r1Rk6Da/f52wBJE8ICFgm7Uyrjtfcc90gBk+7i4I
y1aNwKW/nqmqQBEiTeyUF2kJiTovtorQo7zaedPefm2VUoKyxe/8jl7qA7F9+1p0
XvvWrc3/vqEEZR6tmcAF8tmp0MSkMnt3klwg/xopVn5nPq52t6fLRXA0aLFBUHzT
U82Iw1Weg+gUVi77ONDIabfYuCqqEgpnAyeUhh8hAgMBAAGjggNvMIIDazAfBgNV
HSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUFJzBKVTbToPC
UoxWxXfRAJGz+YswDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0l
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGyMQEC
AgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9DUFMw
CAYGZ4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2RvY2Eu
Y29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcmww
gYUGCCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21vZG9j
YS5jb20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNy
dDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMDkGA1UdEQQy
MDCCFHNlY3VyZS5lbWFpbHNydnIuY29tghh3d3cuc2VjdXJlLmVtYWlsc3J2ci5j
b20wggGABgorBgEEAdZ5AgQCBIIBcASCAWwBagB3ALvZ37wfinG1k5Qjl6qSe0c4
V5UKq1LoGpCWZDaOHtGFAAABaDf6Nt0AAAQDAEgwRgIhAJDqOzt2LWqviVrjKGFL
UCPuu/HWeuILG/7VuDwJWWYYAiEAvCaXH3lSCRWOgGquaz9lW3uITCuKQP0TOOMv
JPbcN/IAdwBep3P531bA57U2SH3QSeAyepGaDIShEhKEGHWWgXFFWAAAAWg3+jcn
AAAEAwBIMEYCIQCxU8IX94IoSwsrpo6zJoUMO4uNGuTkpLSY0h/KWbspqQIhAIy4
XfY5RtTTLpB3EFLXMyQSL9/gyNpfJ1OtbYtOkL0pAHYA8JWkWfIA0YJAEC0vk4iO
rUv+HUfjmeHQNKawqKqOsnMAAAFoN/o5AAAABAMARzBFAiAePxbn6JuVUkYjBVnF
MPHeqyqAaYpdwyGxaC3Cz4WZhAIhAPFXU3e0+7GkNMjXFPQ6UMd55zeUJcxakFIt
ggm7ioLYMA0GCSqGSIb3DQEBCwUAA4IBAQAkLuNWuHt5GOXkzJlys09mg22+MnhF
4y+abm7F54stsv0A2Gc4my4bEXOZ4ozf0g1Yjb/ZVlSVrNC125CSnXd6bEcesjcn
c3oxO+9dFCQGMH4CZPVSoDKBk41+VP9IcnfibhSzV8wFXQh+Tt1OpRoNgqM888Es
JvYP9B2OgDvQFnDNAcJXM5fgX1CilyXqPtz2QYDNVgN8tuRSRPlaGTkZgGMsCO12
GjxLD5UGsxh5c08KSRgd4Uv6BRH/hE62spqvmDUDzuU+Qx9N4/Tz2ocv8LI8GlqV
RYOe+6lLe8t33yH0dnRWKGrpT8gWkul1qLHI9I7LYZMvMKdcxl8oBBGF
-----END CERTIFICATE-----
subject=OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com

issuer=C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA

---
No se enviaron nombres de CA de certificado de cliente
---
El apretón de manos SSL ha leído 6414 bytes y escrito 319 bytes
Verificación: OK
---
Nuevo, (NONE), Cipher es (NONE)
La clave pública del servidor es de 2048 bits
Renegociación segura SÍ es compatible
Compresión: NONE
Expansión: NONE
No se negoció ALPN
Sesión SSL:
    Protocolo  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1569003408
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
---

Parece que el problema ha vuelto:

Jobs::HandledExceptionWrapper: Wrapped OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: dh key too small

(Al menos en los últimos miles de fallos.)

También: ¡Feliz cumpleaños, @gerhard!

Ese error sugiere que el servidor SMTP está configurado incorrectamente y utiliza una clave DH que OpenSSL considera demasiado pequeña.

Eso parece algo poco probable por parte de Rackspace, pero puedo intentar involucrar a uno de sus técnicos en esto.

Bueno, el error proviene de OpenSSL y, por lo que sé, estamos utilizando los valores predeterminados proporcionados por Debian / Ruby? :man_shrugging:

Parece que la nueva versión de la imagen base incluye una versión de OpenSSL que finalmente ha deshabilitado los algoritmos de firma antiguos e inseguros.

Nuestra intranet corporativa cuenta con una CA de Windows antigua que utilizaba MD5, lo que rompió por completo HTTPS en mi instalación de Discourse tras la actualización. Nginx mostró el error “SSL_CTX_use_certificate:ca md too weak” y se negó a cargar el certificado HTTPS.

RHEL y CentOS tienen un mecanismo heredado para volver a activarlos, pero no pude encontrar una configuración de compatibilidad similar en Debian/Ubuntu:

Estoy seguro de que más personas se encontrarán con esto debido a la cantidad de certificados antiguos e inseguros que circulan, pero probablemente no haya mucho que hacer al respecto más que reemplazar los certificados. Te sugiero que contactes directamente a Rackspace sobre el problema del correo.

Esta es una pregunta para @gerhard

Estoy bastante seguro de que esto es un error. Pedí a un técnico de Rackspace que lo revisara y me proporcionó la siguiente información sobre su clave DH:

Aquí está la información públicamente disponible:

CA = Comodo Limited CA
Tamaño de la clave del certificado = 2048 bits
Nombre de dominio = mx1.emailsrvr.com y mx2.emailsrvr.com
Nombre del servidor de correo = secure.emailsrvr.com
Software del host de correo (identifique el software y la versión que se ejecuta en el MTA) =
ecelerity 2.2.3.49
Fuerza del cifrado = AES256-SHA

Debería pensar que una clave de 2048 bits no se consideraría (correctamente) “demasiado pequeña”.

Desde U.S. | Let There Be Change | Accenture

El tamaño mínimo recomendado actualmente para los parámetros DH es de 2048 bits. Cualquier valor igual o inferior a 1024 se considera inseguro.

Vale, así que veamos la clave DH utilizando una versión más antigua de Debian:

docker run --rm -it debian:stretch
apt update && apt install -y openssl
openssl s_client -connect secure.emailsrvr.com:465 | grep "Server Temp Key"

Sí, la clave DH es definitivamente demasiado pequeña:

Server Temp Key: DH, 1024 bits

Diría que esto es algo que Rackspace debe corregir. Como solución temporal, deberías poder editar /etc/ssl/openssl.cnf y eliminar CipherString = DEFAULT@SECLEVEL=2 al final del archivo. Sidekiq debería adoptar la nueva configuración de OpenSSL después de reiniciar el contenedor.

openssl s_client -connect secure.emailsrvr.com:465 | grep "Server Temp Key"
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
verify return:1
Server Temp Key: DH, 1024 bits

De vuelta a charlar con Rackspace.

Actualización de Rackspace:

Gracias por su paciencia y por haber llamado nuestra atención sobre esto. Podemos confirmar que nuestra clave DH actual es de 1024 bits. Nuestros equipos de Producto e Ingeniería han reconocido que esto debe aumentarse y ya tienen planes para solucionar el problema.

No tengo una fecha exacta para usted sobre cuándo se implementará la corrección, aunque el objetivo es hacerlo en algún momento de este mes. Tan pronto como aumentemos el tamaño de la clave DH, nos aseguraremos de mantenerlo informado con una actualización.

¡Gracias nuevamente por traer esto a nuestra atención! Si tiene preguntas o inquietudes adicionales, no dude en hacérnoslo saber.

Actualizaré este hilo cuando reciba la notificación de que la clave DH ha sido actualizada.

Pude solucionar mi problema con ese parche, pero no es muy prometedor :slight_smile:
En la próxima reconstrucción desaparecerá de nuevo, ¿verdad? :slight_smile:

Bueno, con suerte Rackspace solucionará el problema antes de que necesites realizar una reconstrucción. De lo contrario, puedes modificar openssl.cnf desde dentro de app.yml utilizando comandos sed para hacer el cambio permanente.

Actualización de Rackspace:

Gracias por su paciencia. El tamaño de la clave DH se ha actualizado y ahora coincide con el tamaño de la clave del certificado. Por favor, realice pruebas y avísenos si tiene alguna pregunta o inquietud adicional.

Verificado:

openssl s_client -connect secure.emailsrvr.com:465 | grep "Server Temp Key"
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
verify return:1
Server Temp Key: DH, 2048 bits

Adicionalmente, verifiqué que puedo enviar correos electrónicos desde mis instalaciones de Discourse nuevamente. Por lo tanto (al menos para Rackspace), este problema ha sido resuelto.