由于我们的网络设置,当我们去年转移业务时,我们切换 Exchange 2010 以使用AWS SES 来中继我们的外发电子邮件。直到昨天,当 Exchange 开始无法与 SES 建立 TLS 连接时,这一直运行良好,并且在任何尝试连接时都会在事件日志中出现此错误
无法验证连接器 Amazon SES 的智能主机的 TLS 证书。证书的证书验证错误是 UntrustedRoot。如果问题仍然存在,请联系智能主机管理员解决问题。
我将 OpenSSL for Windows 放在盒子上并运行我在这个线程中找到的命令
openssl s_client -connect email-smtp.us-east-1.amazonaws.com:25 -starttls smtp
CONNECTED(000000EC)
depth=1 C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 Secure服务器 CA - G4
验证错误:num=20:unable to get local issuer certificate
---
证书链
0 s:/C=US/ST=Washington/L=Seattle/O=Amazon.com, Inc./CN=email -smtp.us-east-1.amazonaws.com
i:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
1 s:/C=US/O= Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3
Secure Server CA - G4
i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc.
- 仅供授权使用/CN=VeriSign Class 3 Public Primary Certification Authority - G5
---
服务器证书
[为简洁而删除]
subject=/C=US/ST=Washington/L=Seattle/O=Amazon.com, Inc. /CN=email-smtp.us-east-1.amazonaws.com
issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
---
无客户端证书已发送 CA 名称
---
SSL 握手已读取 3005 字节并写入 708 字节
---
新,TLSv1/SSLv3,密码为 AES256-SHA
服务器公钥为 2048 位
支持安全重新协商
压缩:无
扩展:无
未协商 ALPN
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: 5576FCDBA77EB88DC9C2678EA399604E0A4543E5CFC0FA1E89F7320A7A84993C
Session-ID-ctx:
Master-Key: CBD8DEA48F07E570896E02CBDC0E1DA08F0DA1D4CA901522B05A9C6F66A3E4F9 811AA12DE24BA0C14402F5585C32BF05
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1433861339
超时:300(秒)
验证返回码:20(无法获取本地颁发者证书)
Linux 与 Windows 上的唯一区别是最后一行
验证返回码:20(无法获取本地颁发者证书)
我怀疑这是 CA 链问题,但我该如何解决?运行集线器传输的服务器是 Windows Server 2008 机器。
所以我终于找到了答案(其他人也有同样的问题)。我是正确的,因为 CA 链丢失了一些东西。这显然是Verisign Class 3 Public Primary Certification Authority - G4(根据您的浏览器,它也被列为 Symantec)。您可以在https://www.amazonsha256.com/查看正在使用的新证书
我按照TechNet 的步骤安装了新的根证书,这里有一个小提示。他们在任何地方都没有提到它,但是如果您使用 CERTIFICATE 声明并将其作为纯文本保存在带有
.cer
扩展名的文件中,它将毫无问题地导入 Windows。导入后 SES 再次工作。我不知道为什么它在 MS 计算机商店而不是 IE 商店中丢失。