出站匿名 TLS 证书选择

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2009-12-07

本主题介绍 Microsoft Exchange Server 2010 中出站匿名传输层安全性 (TLS) 证书的选择过程。出站匿名 TLS 证书的选择发生在以下情况下:

  • 对边缘传输服务器与集线器传输服务器之间的 SMTP 会话进行身份验证

  • 仅使用公钥对集线器传输服务器之间的 SMTP 会话进行加密

对于集线器传输服务器之间的通信,使用匿名 TLS 和来自证书的公钥对会话加密。建立 SMTP 会话后,接收服务器将启动一个证书选择过程,以确定在 TLS 协商期间使用哪个证书。接收服务器也会执行证书选择过程。有关此过程的详细信息,请参阅选择入站匿名 TLS 证书

选择出站匿名 TLS 证书的所有步骤都在发送服务器上执行。下图给出了此过程的所有步骤。

出站匿名 TLS 证书选择

出站匿名 TLS 证书选择
  1. 从集线器传输服务器或边缘传输服务器建立 SMTP 会话后,Microsoft Exchange 会调用一个过程来加载证书。

    注释注意:
    在证书的初始加载过程中,边缘传输服务器角色和集线器传输服务器角色的出站证书选择过程不同。此图给出了每个服务器角色的起始点。
  2. 证书加载过程取决于 SMTP 会话从集线器传输服务器还是从边缘传输服务器启动。

    在集线器传输服务器上:将进行下列检查:

    1. 检查会话连接到的发送连接器,查看是否已为 ExchangeServer 配置了 SmartHostAuthMechanism 属性。您可以使用 Set-SendConnector cmdlet 在发送连接器上设置 SmartHostAuthMechanism 属性。您还可以在特定发送连接器的“配置智能主机身份验证设置”页上选择“Exchange Server 身份验证”,将 SmartHostAuthMechanism 属性设置为 ExchangeServer。若要打开“配置智能主机身份验证设置”页,请在发送连接器属性页的“网络”选项卡中单击“更改”。

    2. 检查邮件的 DeliveryType 属性,确定是否已将其值设置为 SmtpRelayWithinAdSitetoEdge。可以通过运行带有格式列表参数 (| Format-List) 的 Get-Queue cmdlet 来查看 DeliveryType 属性。

      必须满足以下两个条件。如果未将 ExchangeServer 作为身份验证机制启用,或未将 DeliveryType 属性设置为 SmtpRelayWithinAdSitetoEdge,则发送集线器传输服务器将不使用匿名 TLS,并且也不会加载证书。如果两个条件都满足,证书选择过程会继续进行步骤 3。

    在边缘传输服务器上:将进行下列检查:

    1. 检查会话连接到的发送连接器,查看是否已为 ExchangeServer 配置了 SmartHostAuthMechanism 属性。如本主题前面所述,可以通过使用 Set-SendConnector cmdlet 在发送连接器上设置 SmartHostAuthMechanism 属性。您还可以在特定发送连接器的“配置智能主机身份验证设置”页上选择“Exchange Server 身份验证”,将 SmartHostAuthMechanism 属性设置为 ExchangeServer。若要打开“配置智能主机身份验证设置”页,请在发送连接器属性页的“网络”选项卡中单击“更改”。

    2. 检查会话所连接到的发送连接器,确定 SmartHost 地址空间属性中是否包含“- -”。

      必须满足以下两个条件。如果未将 ExchangeServer 作为身份验证机制启用,或者地址空间中不包含“- -”,则发送边缘传输服务器将不使用匿名 TLS,而且也不会加载证书。如果两个条件都满足,证书选择过程会继续进行步骤 3。

  3. Microsoft Exchange 将查询 Active Directory 以在服务器上检索证书指纹。证书指纹存储于服务器对象的 msExchServerInternalTLSCert 属性。

    如果无法读取 msExchServerInternalTLSCert 属性或该值为 null,则 Microsoft Exchange 不会在 SMTP 会话中公布 X-ANONYMOUSTLS,而且也不会加载证书。

    注释注意:
    如果在启动 Microsoft Exchange 传输服务期间(而非 SMTP 会话期间)无法读取 msExchServerInternalTLSCert 属性或者该属性的值为 null,应用程序日志中会记录事件 ID 12012。
  4. 如果发现了指纹,证书选择过程会对本地计算机证书存储进行搜索以寻找与指纹匹配的证书。如果找不到相关证书,则服务器不会公布 X-ANONYMOUSTLS,也不会加载任何证书,并且应用程序日志会记录事件 ID 12013。

  5. 从证书存储加载证书后,会检查它是否已过期。将证书上的 Valid to 字段与当前日期和时间进行比较。如果证书已过期,应用程序日志会记录事件 ID 12015。在这种情况下,证书选择过程并没有失败,还在继续剩余的检查。

  6. 检查证书以查看它是否为本地计算机证书存储中的最新证书。作为此检查的一部分,还会为潜在的证书域建立域列表。域列表基于以下计算机配置:

    • 完全限定的域名 (FQDN),如 mail.contoso.com

    • 主机名,如 EdgeServer01

    • 物理 FQDN,如 EdgeServer01.contoso.com

    • 物理主机名,如 EdgeServer01

      注释注意:
      如果服务器运行 Microsoft Windows 负载平衡,则不再检查 DnsFullyQualifiedDomainName 设置,而是检查以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WLBS\Parameters\Interface\{GUID}\ClusterName
  7. 建立域列表后,证书选择过程会执行搜索,以在证书存储中查找与 FQDN 匹配的所有证书。证书选择过程会从此列表中找出合格的证书的列表。合格的证书必须满足下列条件:

    • 证书是 X.509 版本 3 或更高版本。

    • 证书具有相关的私钥。

    • “主题”或“主题备用名称”字段包含步骤 6 中检索到的 FQDN。

    • 证书已启用,以供安全套接字层 (SSL)/TLS 使用。具体来说,已使用 Enable-ExchangeCertificate cmdlet 为此证书启用了 SMTP 服务。

  8. 按照以下顺序从合格的证书中选择最合适的证书:

    1. 按照最近的 Valid from 日期对合格证书进行排序。Valid from 是证书上的“版本 1”字段。

    2. 使用从此列表中找到的第一个有效公钥基础结构 (PKI) 证书。

    3. 如果未找到有效的 PKI 证书,则使用第一个自签名证书。

  9. 确定最合适的证书后,将进行另一项检查以确定证书指纹是否与 msExchServerInternalTLSCert 属性中存储的证书相匹配。如果相匹配,则该证书将用于 X-ANONYMOUSTLS。如果不匹配,则将在应用程序日志中记录事件 ID 1037。但是,这并不会导致 X-ANONYMOUSTLS 运行失败。

 © 2010 Microsoft Corporation。保留所有权利。
显示: