我们有在Windows Server 2008上运行的Exchange 2007服务器。我们的客户端使用另一个供应商的邮件服务器。 他们的安全策略要求我们使用强制的TLS。 这工作很好,直到最近。
现在,当Exchange尝试将邮件传递到客户端的服务器时,它会logging以下内容:
我们无法build立与连接器“默认外部邮件”上的域安全域“ourclient.com”的安全连接,因为我们对ourclient.com的传输层安全性(TLS)证书的validation失败,状态为“UntrustedRoot”。 联系ourclient.com的pipe理员来解决问题,或从域安全列表中删除域。
从TLSSendDomainSecureList中删除ourclient.com会使消息以机会TLS成功传递,但这是一个临时解决方法。
客户是一个非常庞大,安全敏感的国际公司。 我们的IT联系人声称不知道他们的TLS证书有任何变化。 我已经多次询问他是否需要确定生成证书的权限,以便我可以排除validation错误,但是迄今为止他一直无法提供答案。 据我所知,我们的客户可能已经用有效的TLS证书replace了内部证书颁发机构的证书。
有没有人知道一种方法来手动检查远程SMTP服务器的TLS证书,就像在Web浏览器中对远程HTTPS服务器的证书所做的那样? 确定谁颁发证书并将其与Exchange服务器上受信任的根证书列表进行比较可能非常有帮助。
你可以使用OpenSSL。 如果你必须用STARTTLS
检查证书,那么就这样做
openssl s_client -connect mail.example.com:25 -starttls smtp
或为一个标准的安全的SMTP端口:
openssl s_client -connect mail.example.com:465
我知道这是一个古老的问题,但即使在今天,对于希望确认其电子邮件服务器上的SSL证书有效性的pipe理员而言,这仍是一个相关的问题。
如果你没有OpenSSL,你也可以使用这个Python代码片段:
import smtplib import ssl connection = smtplib.SMTP() connection.connect('[hostname].') connection.starttls() print ssl.DER_cert_to_PEM_cert(connection.sock.getpeercert(binary_form=True))
其中[主机名]是服务器。
来源: https : //support.google.com/a/answer/6180220
这将为您提供OpenSSL库,这使安装变得更容易一些。