最近遇到这样的一个案例,一个用户在为
Exchange 2007上的用户配置
POP3 SSL的时候遇到证书的错误,经过仔细分析日志文件,该问题终于得到了解决,现在把它整理一下,和大家一起分享排错的经验。
首先介绍一下用户的配置环境:
域名为
abc.com,为了
安全上的原因,我将用户的域名做了修改。
Exchange 2007 服务器,安装有中心传输
服务器、客户端访问服务器和邮箱服务器等角色。
客户端为
Outlook 2003 ,用户通过
POP3和
SMTP的方式接收和发送邮件。现在用户做了一下配置:
在
Outlook 2003中,做了以下设置:
在
INTERNET电子邮件设置
(POP3)中
�D钩选
"使用
安全密码验证登陆
(SPA)"
�D其他设置
"我的发送服务器
(SMTP) 要求验证
"
�D接收服务器
(POP3) 995端口
�D钩选
"此服务器要求加密连接
(SSL)"
�DSMTP) 25端口
如图
1 所示。
在打开
OUTLOOK2003后,点
"收发邮件
",出现下面的信息:
您连接到的服务器正在使用一个无法验证的安全证书.
已处理证书链,但是在不受信任提供程序信任的根证书中终止.
您想继续使用这个服务器吗?(是/ 否)
看到这个错误,我首先想到客户端可能不信任该证书,该证书可能是一张自签名的证书,在安装
Exchange 2007服务器的时候,系统会自动安装一张自签名的证书,由于该证书不位于客户端的受信任的根证书
存储列表中,因此该证书不被客户端信任。为了确认该证书的相关信息,我让用户在
Exchange 2007服务器上运行下面的命令:
Get-exchangecertificate | fl *
AccessRules : {System.Security.AccessControl.CryptoKeyAccessRule, Syst
em.Security.AccessControl.CryptoKeyAccessRule, System.Se
curity.AccessControl.CryptoKeyAccessRule}
CertificateDomains : {servername, servername.abc.com}
CertificateRequest :
IisServices : {IIS://servername/W3SVC/1}
IsSelfSigned : True
KeyIdentifier : 9DF099B1F590BD4E9F1E851203F249E5F28EB8B1
RootCAType : None
Services : IMAP, POP, IIS, SMTP
Status : Valid
根据下面的信息,我们可以判断出该证书是自签名的证书:
IsSelfSigned : True
我建议用户从第三方商业机构申请证书或者从安装
Windows CA来颁发证书,通过
import-exchangecertificate命令导入该证书,然后通过
Enable-ExchangeCertificate -Thumbprint 5113ae0233a72fccb75b1d0198628675333d010e -Services "POP, IMAP" 为该证书启用
POP3服务,在测试一下,看结果如何。
同时我又让用户在
Exchange 服务器上运行下面的命令来检查
POP3的相关设置:
Get-popsettings | fl
Name : 1
ProtocolName : POP3
MaxCommandSize : 45
MessageRetrievalSortOrder : Descending
UnencryptedOrTLSBindings : {0000:0000:0000:0000:0000:0000: 0.0.0 .0:110,
0.0.0
.0:110}
SSLBindings : {0000:0000:0000:0000:0000:0000: 0.0.0 .0:995,
0.0.0
.0:995}
X509CertificateName : servername
Banner : The Microsoft Exchange POP3 service is read
y.
LoginType : PlainTextLogin
我发现
Logintype设置不正确,
POP3有三种身份验证方法,分别是
PlainTextLogin、
PlainTextAuthentication和
SecureLogin。说到这里,我们不得不解释每种身份验证方法的具体含义。
PlainTextLogin表示端口
110 上不需要
TLS 加密。
PlainTextAuthentication表示端口
110 上不需要
TLS 加密。但是,只允许在使用
TLS 或
SSL 加密的端口上使用基本身份验证。
SecureLogin 表示执行身份验证之前,端口
110 上的连接必须使用
TLS 加密。
因此,正确的设置应该是
SecureLogin。我让用户运行下面的命令来修改:
Set-popsettings -logintype SecureLogin
此外,我还发现下面的信息:
X509CertificateName : servername
这时,用户打开
Outlook时出现下面的信息:
您连接的服务器正在使用一个无法验证的安全证书.
证书的CN名给传递的值不匹配.
你想继续使用这个服务器吗?
看到该信息,说明前面的步骤已经生效了,该错误只是说明证书的名称和
POP3中设置的服务器名称不一致。
我让用户仔细检查图
2中接收服务器中设置的服务器名称是否和
X509CertificateName中的名称一致,用户发现它填写的是服务器的
IP地址,在修改为与
X509CertificateName一致的名称后,打开
Outlook后,不会出现任何告警信息,问题到此已经解决。