最近遇到这样的一个案例,一个用户在为Exchange 2007上的用户配置POP3 SSL的时候遇到证书的错误,经过仔细分析日志文件,该问题终于得到了解决,现在把它整理一下,和大家一起分享排错的经验。

  首先介绍一下用户的配置环境:

  域名为abc.com,为了安全上的原因,我将用户的域名做了修改。

  Exchange 2007 服务器,安装有中心传输服务器、客户端访问服务器和邮箱服务器等角色。

  客户端为Outlook 2003 ,用户通过POP3和SMTP的方式接收和发送邮件。现在用户做了一下配置:

  在Outlook 2003中,做了以下设置:

  在INTERNET电子邮件设置(POP3)中

  ―钩选 "使用安全密码验证登陆(SPA)"

  ―其他设置 "我的发送服务器 (SMTP) 要求验证"

  ―接收服务器 (POP3) 995端口

  ―钩选 "此服务器要求加密连接 (SSL)"

  ―SMTP) 25端口

  如图1 所示。

   


    
   
在打开OUTLOOK2003后,点"收发邮件",出现下面的信息:

  您连接到的服务器正在使用一个无法验证的安全证书.

  已处理证书链,但是在不受信任提供程序信任的根证书中终止.

  您想继续使用这个服务器吗?(是/ 否)

  看到这个错误,我首先想到客户端可能不信任该证书,该证书可能是一张自签名的证书,在安装Exchange 2007服务器的时候,系统会自动安装一张自签名的证书,由于该证书不位于客户端的受信任的根证书存储列表中,因此该证书不被客户端信任。为了确认该证书的相关信息,我让用户在Exchange 2007服务器上运行下面的命令:

  Get-exchangecertificate | fl *

  Acce***ules          : {System.Security.AccessControl.CryptoKeyAcce***ule, Syst

  em.Security.AccessControl.CryptoKeyAcce***ule, System.Se

  curity.AccessControl.CryptoKeyAcce***ule}

  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:110}

  SSLBindings                       : {0000:0000:0000:0000:0000:0000:.0:995,

.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后,不会出现任何告警信息,问题到此已经解决。