sendmail拒绝某些握手失败的连接:SSL警报号40


8

我在CentOS 5上的sendmail服务器开始拒绝某些连接,并记录了以下消息:

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服务器?

Answers:


10

这是因为在CentOS 6上对openssl进行了最新更新之后openssl-1.0.1e-30.el6.11.x86_64,使用该库的程序开始拒绝连接到易受Logjam TLS漏洞影响的服务器。

您需要配置sendmail以使用更强的临时Diffie-Hellman密钥-至少1024位。它与TLS证书中使用的密钥不同,因此,如果证书使用2048位密钥,则您仍然容易受到攻击。

在服务器上生成DH参数文件:

openssl dhparam -out /etc/pki/tls/certs/dhparams.pem 1024

配置sendmail以使用此参数文件,并仅使用强密码。添加到/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


从我这里+1-一件很不错的工作,还有一个救生员。谢谢!
MadHatter

为了澄清起见,是否需要在发送或接收服务器上进行此更改?或两者?
2015年

1
@乔接收方。我不确定仍然严格要求这样做,因为有一个针对RHEL5 / CentOS5发行的新的openssl软件包(openssl-0.9.8e-36.el5_11),该软件包可能已纠正了此问题。不过还是推荐。
Tometzky

我不希望1024位DH参数更安全。现在开始使用2048位参数。
迈克尔·汉普顿

好的,那可以修复服务器,但是无论如何我如何使s_client STFU并连接?
Ricky Beam

0

是的,它的工作原理是:-)

我的错误几乎没有什么不同,但是解决方案是相同的:

SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter:s3_pkt.c:1060:SSL alert number 47

我生成服务器临时密钥:DH文件(我的配置中没有任何文件,默认为512位)

openssl dhparam -out /etc/mail/certs/dhparams.pem 2048

(花费非常非常长的时间;-)

然后将一行放入sendmail.cf

O DHParameters=/etc/mail/certs/dhparams.pem

重新启动后,我的sendmail开始再次发送邮件:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.