在我运行的Debian 7 / exim4 / gnutls邮件服务器上,大约1-2周后,来自gmail的邮件不会再到达日志文件中的以下典型错误消息:
2015-02-14 17:32:07 TLS error on connection from mail-la0-f52.google.com [209.85.215.52] (gnutls_handshake): Could not negotiate a supported cipher suite.
有谁知道谷歌是否改变了他们的configuration?
你在exim4configuration中对tls_require_ciphers的推荐设置是什么?
这个问题出现在蓝天之外,过去两周我没有更换证书或者更新。 我是唯一有这个问题的人吗?
问题是:服务器证书是用SHA-512哈希签名的。 Debian 7仍然带有gnutls 2.x,但是需要gnutls 3.x才能保存使用SHA-512签名的证书。 我在2014年12月23日安装了这个证书。
谷歌似乎已经改变了他们在密码协商方面的政策,在回退密码套装和/或签名检查方面更为严格。 直到2015年1月底,与Gmail服务器的邮件交换工作(使用Debian 7 + gnutls 2.6 + SHA-512签名的CRTconfiguration),然后它突然下降,所以在2015年1月底之后,我这边。
解决scheme:代替SHA-256签名证书或升级到gnutls 3.x(目前不在Debian 7的稳定分支中)解决了这个问题。 (我做了第一个)
注1:在线调查我发现这也是许多非纪念性的CaCert.org证书的问题,这些证书现在默认为SHA-512签名。 看来CaCert.org现在在CRT代接口中提供了一个“高级选项”来selectSHA-256来避免Debian 7用户的这个问题。 然而,在这个精确的问题上,目前在线论坛上有很多误导性的提示和build议,认为必须在exim4configuration中正确设置tls_require_ciphersvariables,以确保恰当的密码套件协商。 这是错误的; 我根本没有调整这个variables。
注2:关于使用Thunderbird连接到exim4 + Debian 7 MTA发送邮件的客户,有一个相关的问题(参见这篇文章: Thunderbird更新后的Exim:“无法协商一个支持的密码套件” ,这个套件已经closures,但事实上高度相关)。当协商密码套件时,Thunderbird具有和gmail完全一样的严格configuration,所以当服务器使用gnutls <3.x而不是SHA-512签名的CRT时,在这种情况下会失败。 解决scheme是一样的:使用SHA-256签名的CRT或更新libgnutls(如果可能在您的发行版中)。