Meu servidor sendmail no CentOS 5 começou a rejeitar algumas conexões com a seguinte mensagem registrada:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1092:SSL alert number 40
Quando tento conectar-me a ele usando o openssl do servidor CentOS 6, recebo o seguinte erro:
$ openssl s_client -starttls smtp -crlf -connect hostname.example.net:smtp
(...)
error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small:s3_clnt.c:3331
(...)
Server Temp Key: DH, 512 bits
(...)
O correio no servidor CentOS 6 é temporariamente rejeitado com Deferred: 403 4.7.0 TLS handshake failed
.
O que fazer para poder enviar e-mail do servidor CentOS 6/RHEL 6 para o servidor CentOS6/RHEL5?
Responder1
Isso ocorre porque após uma atualização recente do openssl no CentOS 6, openssl-1.0.1e-30.el6.11.x86_64
os programas que usam esta biblioteca começaram a recusar a conexão a servidores vulneráveis aImpasseVulnerabilidade TLS.
Você precisa configurar o sendmail para usar uma chave Diffie-Hellman temporária mais forte - pelo menos 1024 bits. Não é a mesma chave que você usa no seu certificado TLS, portanto, se o seu certificado usar uma chave de 2.048 bits, você ainda poderá estar vulnerável.
Gere o arquivo de parâmetros DH em seu servidor:
openssl dhparam -out /etc/pki/tls/certs/dhparams.pem 1024
Configure o sendmail para usar este arquivo de parâmetros e usar apenas cifras fortes. Adicionar à /etc/mail/sendmail.mc
:
LOCAL_CONFIG
O CipherList=HIGH:!ADH
O DHParameters=/etc/pki/tls/certs/dhparams.pem
O ServerSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3 +SSL_OP_CIPHER_SERVER_PREFERENCE
O ClientSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3
Então use make -C /etc/mail/
e service sendmail restart
.
Responder2
Sim, funciona :-)
Meu erro foi um pouco diferente, mas a solução é a mesma:
SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter:s3_pkt.c:1060:SSL alert number 47
Eu gero a chave temporária do servidor: arquivo DH (não tenho nenhuma na minha configuração, o padrão é 512 bits)
openssl dhparam -out /etc/mail/certs/dhparams.pem 2048
(demora muito, muito tempo ;-)
e coloquei linha no sendmail.cf
O DHParameters=/etc/mail/certs/dhparams.pem
Depois de reiniciar meu sendmail começa a enviar e-mails novamente :-)