¡Te damos la bienvenida al nuevo sysarmy --help! Para recuperar tu usuario pedí un password reset.

Server returned error: "TLS Negotiation failed, the certificate doesn't match the host., code: 0"

editado June 2020 en General

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:

    • vuestro servidor de correo ofrece TLS en alguno de los puertos de postfix,
    • posee, además resolución inversa adecuada (si se llama mail.example.com, el puntero reverso resuelve de su IP resuelve al mismo)
    • que el certificado que presenta a terceros, en los servicios que ofrece TLS (además de HTTP) es el correcto
  • 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...

  • editado June 2020

    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...

    Cualquier dato

  • editado June 2020

    Solucionado, generar un crt con el certificado RSA y el CA intermedio.

    De esta forma solo utilizo smtpd_tls_cert_file y smtpd_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!

  • editado June 2020

    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

    MinProtocol = TLSv1.2
    MaxProtocol = TLSv1.3
    

    por eso es que no negocia menos que TLSv1.2.

    De nuevo, mil gracias

Accede o Regístrate para comentar.