我在CentOS 5上的sendmail服务器开始拒绝一些连接,logging下面的消息:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1092:SSL alert number 40
当我尝试从CentOS 6服务器使用openssl连接到它时,出现以下错误:
$ 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 (...)
暂时拒绝CentOS 6服务器上的邮件, Deferred: 403 4.7.0 TLS handshake failed 。
如何将CentOS 6 / RHEL 6的邮件发送至CentOS6 / RHEL5服务器?
这是因为在CentOS 6 openssl-1.0.1e-30.el6.11.x86_64上最近更新openssl openssl-1.0.1e-30.el6.11.x86_64 ,使用这个库的程序开始拒绝连接到易受Logjam TLS漏洞攻击的服务器。
您需要configurationsendmail使用更强大的临时Diffie-Hellman密钥 – 至less1024位。 这与您在TLS证书中使用的密钥不同,因此如果您的证书使用2048位密钥,那么您仍然可能受到攻击。
在您的服务器上生成DH参数文件:
openssl dhparam -out /etc/pki/tls/certs/dhparams.pem 1024
configurationsendmail使用这个参数文件,并只使用强密码。 添加到/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
然后使用make -C /etc/mail/和service sendmail restart 。
是的,它的工作原理:-)
我的错误是有点不同,但解决scheme是一样的:
SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter:s3_pkt.c:1060:SSL alert number 47
我生成服务器临时密钥:DH文件(我没有在我的configuration,默认是512位)
openssl dhparam -out /etc/mail/certs/dhparams.pem 2048
(花很长时间;-)
我把行放到sendmail.cf中
O DHParameters=/etc/mail/certs/dhparams.pem
重新启动后,我的sendmail开始再次发送邮件:-)