Server returned error: "TLS Negotiation failed, the certificate doesn't match the host., code: 0"
Buenas y muchas gracias por permitirme participar... Los conocí hace tiempo en un encuentro de RedHat y desde ahí los sigo por las redes y hoy me encuentro participando con una consulta.
Como algunos sabrán, a principios de abril, google comenzó a forzar la autenticación over SSL/TLS para las cuentas alias usando gmail. Con esto, si no modificas te adaptas, no podes enviar mails desde gmail, usando un alias.
Tenemos un servidor con RHEL8.2, postfix-3.3.1-12 y openssl-1.1.1c-15. Autenticamos correo saliente y soporte SSL/TLS STARTTLS, pero no hay caso de que gmail permita enviar correo. Por lo visto en el log, la conexión TLS se establece, pero al momento del EHLO, corta la conexión. Esto comenzó a pasar desde lo que impuso google, lo cual me parece perfecto... A alguno le paso esto, puede tirarme una punta para poder verlo? Estoy en la lista de postfix users, tire el problema y aun no tengo respuestas.. pero pense que alguno se abría topado con el tema...
Antes de nada, ví miles de respuestas a las mismas consultas en el soporte de google, pero nada, el error sigue siendo el mismo. Con otros clientes de correo, puedo enviar sin problemas...
Adjunto logs de postfix a ver si alguien se le ocurre algo... Desde ya, mil gracias
//// log de gmail, que corta la conexion ////
May 19 18:41:16 correo postfix/submission/smtpd[164723]: setting up TLS
connection from mail-pl1-f180.google.com[209.85.214.180]
May 19 18:41:16 correo postfix/submission/smtpd[164723]:
mail-pl1-f180.google.com[209.85.214.180]: TLS cipher list
"kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!MD5:!DES:!EXP:!SEED:!IDEA:!3DES:!EXP:!MEDIUM:!LOW:!DES:!3DES:!SSLv2:!SSLv3"
May 19 18:41:16 correo postfix/submission/smtpd[164723]: SSL_accept:before
SSL initialization
May 19 18:41:16 correo postfix/submission/smtpd[164723]: SSL_accept:before
SSL initialization
May 19 18:41:16 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS read client hello
May 19 18:41:16 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS write server hello
May 19 18:41:16 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS write change cipher spec
May 19 18:41:16 correo postfix/submission/smtpd[164723]: SSL_accept:TLSv1.3
write encrypted extensions
May 19 18:41:16 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS write certificate
May 19 18:41:16 correo postfix/submission/smtpd[164723]: SSL_accept:TLSv1.3
write server certificate verify
May 19 18:41:16 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS write finished
May 19 18:41:16 correo postfix/submission/smtpd[164723]: SSL_accept:TLSv1.3
early data
May 19 18:41:17 correo postfix/submission/smtpd[164723]: SSL_accept:TLSv1.3
early data
May 19 18:41:17 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS read finished
May 19 18:41:17 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS write session ticket
May 19 18:41:17 correo postfix/submission/smtpd[164723]:
SSL_accept:SSLv3/TLS write session ticket
May 19 18:41:17 correo postfix/submission/smtpd[164723]: Anonymous TLS
connection established from mail-pl1-f180.google.com[209.85.214.180]:
TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
May 19 18:41:17 correo postfix/submission/smtpd[164723]: lost connection
after STARTTLS from mail-pl1-f180.google.com[209.85.214.180]
May 19 18:41:17 correo postfix/submission/smtpd[164723]: disconnect from
mail-pl1-f180.google.com[209.85.214.180] ehlo=1 starttls=1 commands=2
//// log de otro cliente, que funciona perfectamente ////
May 19 18:44:21 correo postfix/submission/smtpd[164867]: initializing the
server-side TLS engine
May 19 18:44:21 correo postfix/submission/smtpd[164867]: warning: hostname
host-cotesma-114-143-100.smandes.com.ar does not resolve to address
181.114.143.100: Name or service not known
May 19 18:44:21 correo postfix/submission/smtpd[164867]: connect from
unknown[181.114.143.100]
May 19 18:44:21 correo postfix/submission/smtpd[164867]: setting up TLS
connection from unknown[181.114.143.100]
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
unknown[181.114.143.100]: TLS cipher list
"kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!MD5:!DES:!EXP:!SEED:!IDEA:!3DES:!EXP:!MEDIUM:!LOW:!DES:!3DES:!SSLv2:!SSLv3"
May 19 18:44:21 correo postfix/submission/smtpd[164867]: SSL_accept:before
SSL initialization
May 19 18:44:21 correo postfix/submission/smtpd[164867]: SSL_accept:before
SSL initialization
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS read client hello
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write server hello
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write certificate
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write key exchange
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write server done
May 19 18:44:21 correo cyrus/pop3[164825]: USAGE cabelmont user: 0.001622
sys: 0.002688
May 19 18:44:21 correo cyrus/pop3[164825]: counts: retr=<1> top=<0> dele=<0>
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write server done
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS read client key exchange
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS read change cipher spec
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS read finished
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write change cipher spec
May 19 18:44:21 correo postfix/submission/smtpd[164867]:
SSL_accept:SSLv3/TLS write finished
May 19 18:44:21 correo postfix/submission/smtpd[164867]: Anonymous TLS
connection established from unknown[181.114.143.100]: TLSv1.2 with cipher
ECDHE-RSA-AES256-SHA (256/256 bits)
May 19 18:44:22 correo postfix/submission/smtpd[164867]: disconnect from
unknown[181.114.143.100] ehlo=2 starttls=1 auth=1 quit=1 commands=5
Respuestas
Buenas Nicolás, voy a hacer algunas suposiciones sobre la infra.
Según entiendo de la pregunta, uds intentan hacer un envio [ cliente (UA) --> postfix empresa (MTA) ==> gmail (MTA) --> destinatario ] o estoy muy errado?
El error "certificate doesn't match the host" es clásico de un server cuyo certificado no coincide con el nombre del host (o no está cubierto por el wildcard). Podrás chequear con testssl (https://testssl.sh/) si:
Buenas, agradezco mucho tu comentario... Te cuento un poco... un cliente intenta usar gmail centralizando sus cuentas de correo, para ello, configura pop3 en gmail y un alias para el envío de correo usando la plataforma de gmail, pero autenticando contra nuestro postfix. Usa gmail para enviar desde la direccion de correo electrónico de la empresa.
Dicho esto, probé el testssl y el servidor está ofreciendo TLS en puerto submission 587:
Testing protocols via native openssl -> TLS 1.2 offered (OK)
Testing cipher categories -> ok
Testing server preferences -> Negotiated cipher per proto ECDHE-RSA-AES256-GCM-SHA384: TLSv1.2 No further cipher order check has been done as order is determined by the client
Testing server defaults (Server Hello) -> (los datos del certificado ok) Certificate Transparency yes
Testing vulnerabilities -> (resolver alguna que otra, pero en lineas generales ok)
La resolución inversa adecuada da ok
La verdad que me desconcierta que algunos clientes de correo funciona sin inconvenientes, pero gmail evidentemente chequea algo más que no doy en la tecla que es...
Me llama la atención de la salida del testssl.sh
Testing protocols via native openssl
SSLv2 Local problem: /usr/bin/openssl doesn't support "s_client -ssl2"
SSLv3 not offered (OK)
TLS 1 not offered
TLS 1.1 not offered
TLS 1.2 offered (OK)
TLS 1.3 Local problem: /usr/bin/openssl doesn't support "s_client -tls1_3"
Cuando en realidad, tenemos configurado
smtpd_tls_protocols = !SSLv2, !SSLv3
Por lo que TLS 1 y 1.1 deberían estar en la lista...
Nuevamente, mil gracias y me sirvió el testssl.sh Cualquier otra cosa, será bienvenida...
Buenas, agradezco mucho tu comentario... Te cuento un poco... un cliente intenta usar gmail centralizando sus cuentas de correo, para ello, configura pop3 en gmail y un alias para el envío de correo usando la plataforma de gmail, pero autenticando contra nuestro postfix. Usa gmail para enviar desde la direccion de correo electrónico de la empresa.
Dicho esto, probé el testssl y el servidor está ofreciendo TLS en puerto submission 587:
La resolución inversa adecuada da ok
La verdad que me desconcierta que algunos clientes de correo funciona sin inconvenientes, pero gmail evidentemente chequea algo más que no doy en la tecla que es...
Me llama la atención de la salida del testssl.sh
Cuando en realidad, tenemos configurado
smtpd_tls_protocols = !SSLv2, !SSLv3
Por lo que TLS 1 y 1.1 deberían estar en la lista...
Cualquier dato
Solucionado, generar un crt con el certificado RSA y el CA intermedio.
De esta forma solo utilizo
smtpd_tls_cert_file
ysmtpd_tls_key_file
Problema resuelto, muchas gracias
Hola Nicolás, me colgué y recién retorno al hilo. Disculpas!
Raro lo que mencionas sobre la respuesta de testssl respecto a las versiones de protocolo brindadas. Aún así, si mal no recuerdo, algunas versiones de sistemas operativos limitan, mediante configuraciones particulares de la biblioteca openssl (en /etc/ssl/openssl.conf) los protocolos que pueden ofrecer a aquellos posteriores a cierta versión. Eso podría ser una explicación a la falta de TLS1 y TLS1.1, pero es sólo una suposición.
En cualquier caso, genial que lo pudieron resolver! Al final le faltaba el certificado intermedio o bien crearon un certificado con una CN distinta?
Saludos!
Buenas... mil gracias por tus comentarios... lo aprecio mucho y realmente me sirvio para el debug...
En verdad la configuración estaba ok, la directiva con el path al certificado RSA y el que contiene el intermediate CA... pero tuve que generar el crt con un bundle incluyendo el RSA y el CA, y declararlo en smtp_tls_CA_file, siguiendo la instrucción del archivo de configuración de postfix:
The full pathname of a file with the Postfix SMTP server RSA certificate in PEM format. Intermediate certificates should be included in general, the server certificate first, then the issuing CA(s) (bottom-up order).
Por otro lado, en opensslcnf.config tengo
por eso es que no negocia menos que TLSv1.2.
De nuevo, mil gracias