将 Kerberos 与客户端访问服务器阵列或负载平衡解决方案一起使用

 

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

上一次修改主题: 2016-11-28

对于在一个 Active Directory 站点中拥有多个客户端访问服务器的 Microsoft Exchange Server 2010 部署,拓扑通常需要使用客户端访问服务器阵列和负载平衡解决方案将通信分配到该站点的所有客户端访问服务器。有关客户端访问服务器阵列的详细信息,请参阅了解 RPC 客户端访问。有关负载平衡的详细信息,请参阅了解 Exchange 2010 中的负载平衡

使用 Kerberos 身份验证

通常,您网络中加入域的计算机上的邮件客户端使用 NTLM 身份验证。在某些情况下,您可能必须使用 Kerberos 身份验证。仅应在需要时再使用 Kerberos 身份验证,因为 Kerberos 会在安装和实施方面提出其他挑战。有关 Kerberos 的详细信息,请参阅 Kerberos 增强功能Microsoft Kerberos

注释注意:
Kerberos 只能用于网络中加入域的计算机。这包括通过 VPN 连接的客户端。对于网络外的连接,如 Outlook Anywhere,不支持 Kerberos。

可能需要对您的 Exchange 2010 组织使用 Kerberos 身份验证,原因如下:

  • 您的本地安全策略需要 Kerberos 身份验证。

  • 例如,您遇到或预计会发生 NTLM 可伸缩性问题,这时到 RPC 客户端访问服务的 MAPI 直接连接引起了间歇性 NTLM 故障。

    在大规模客户部署中,NTLM 可能会在客户端访问服务器上引起瓶颈问题,而这些瓶颈问题可能会导致个别身份验证失败。使用 NTLM 身份验证的服务对 Active Directory 延迟问题更敏感。这些问题将导致客户端访问服务器请求率提高时身份验证失败。

要配置 Kerberos 身份验证,必须熟悉 Active Directory 以及客户端访问服务器阵列的安装过程。而且,还必须具有 Kerberos 的应用知识。

Kerberos 和负载平衡客户端访问服务器的问题

当客户端访问服务器达到负载平衡或是客户端访问服务器阵列的一部分时,采用 NTLM 身份验证进行配置的客户端将成功连接。但是,使用 Kerberos 还需要安装其他程序,并且在安装 Exchange 2010 Service Pack 1 (SP1) 之前容易发生问题。

在具有负载平衡器或客户端访问阵列的拓扑中,客户端不会按名称连接到单个服务器,但会按阵列名称或负载平衡器名称连接。这将妨碍 Kerberos 身份验证,除非您执行其他配置步骤。

使用 Kerberos 时,第一个配置步骤是为客户端访问服务设置特定的服务主体名称 (SPN) 阵列。设置该阵列后,配置为使用协商身份验证的电子邮件客户端将尝试执行 Kerberos 身份验证。它们将获得在该阵列上下文中使用的 Kerberos 服务票证,并向客户端访问服务器显示这些票证。但是,在任何特定客户端访问服务器上,Exchange 服务都将在本地系统或网络服务帐户的上下文中运行,并将尝试在这些上下文中而不是在阵列上下文中对 Kerberos 服务票证进行身份验证。这将导致上下文不匹配,并会导致协商身份验证失败。由于 Kerberos 有更强的安全性,配置为执行协商身份验证的客户端不会仅回退到 NTLM 身份验证,而是会默认使用 Outlook Anywhere(如果有),或无法进行身份验证和连接。

要使 Kerberos 身份验证成功完成,客户端访问服务器阵列成员必须使用该阵列的所有成员共享的备用凭据。凭据还必须与特定于阵列的 SPN 关联。此共享凭据可以是一个计算机帐户,也可以是服务帐户,而且必须是阵列中每个客户端访问服务器所知的共享凭据。通常,组织要求定期更改帐户密码。这要求执行一项持续任务,即为所有客户端访问服务器分发和更新此共享凭据。在 Exchange 2010 SP1 之前,Windows Server 2008 和 Microsoft Exchange 都没有针对此问题的解决方案。

注释注意:
尽管此次讨论讨论的是网络负载平衡器和客户端访问服务器阵列,但不会导致客户端直接连接到特定客户端访问服务器的任何网络基础结构或配置都会有这些相同的身份验证问题。此配置的其他示例包括具有 DNS 轮循负载平衡的客户端访问服务器和具有自定义 DNS 记录的客户端访问服务器。以下解决方案旨在简化向客户端访问服务器阵列的成员或网络负载平衡器后面的客户端访问服务器分发备用服务帐户凭据的过程。该解决方案并不适用于未在客户端访问阵列中配置客户端访问服务器的配置。

解决方案

要解决此问题,必须有可以让阵列中的或负载平衡器后面的所有客户端访问服务器使用的共享凭据。此凭据称为“备用服务帐户凭据”(ASA 凭据),而且可以是计算机帐户,也可以是用户服务帐户。要将此备用服务帐户凭据分发给所有客户端访问服务器,确保已在 Exchange 2010 SP1 中实施了一箭三雕的解决方案。

已对客户端访问服务器服务主机进行扩展,该主机将为 Kerberos 身份验证使用共享凭据。此服务主机扩展监视本地计算机。添加或删除凭据后,本地系统和网络服务上下文中的 Kerberos 身份验证包就会更新。将凭据添加到身份验证包后,所有客户端访问服务即可将其用于 Kerberos 身份验证。除了能够使用共享凭据外,客户端访问服务器还将能够直接对已解决的服务请求进行身份验证。此扩展称为 servicelet,在默认情况下运行,而且不需要进行任何配置或运行任何操作。

可以使用 Exchange 命令行管理程序获得并设置共享凭据和密码。这样就可以从远程计算机对凭据进行设置。通过将凭据存储到目标计算机的注册表中对凭据进行设置,以了解服务主机的消耗量。您可以使用 Set-ClientAccessServer cmdlet 和新的 AlternateServiceAccountCredential 参数来设置凭据。设置共享凭据密码后,共享凭据将允许客户端访问服务对通过 Intranet 连接的客户端执行 Kerberos 身份验证。有关 Set-ClientAccessServer cmdlet 的详细信息,请参阅 Set-ClientAccessServer

现已创建了一个管理脚本,以帮助将共享凭据自动分发给在该脚本作用域内指定的所有客户端访问服务器。建议通过此脚本使用和维护针对客户端访问服务器阵列 Kerberos 身份验证的共享凭据。该脚本提供一种使用 Set-ClientAccessServer cmdlet 以便于完成以下任务的自动方法:

  • 初始安装   在阵列或林中的所有客户端访问服务器上设置 ASA 凭据。

  • 密码滚动   除了更新 Active Directory 外,还生成 ASA 凭据的新密码并将该密码分发给所有客户端访问服务器。

  • 向客户端访问服务器阵列添加一台或多台计算机   从现有服务器中复制 ASA 凭据并将其分发给其他服务器,以便它们可以使用当前凭据和密码执行 Kerberos 身份验证。

  • 日常维护   创建计划任务,以使用无人值守的方法定期滚动密码。

详细信息

有关如何为负载平衡客户端访问服务器配置 Kerberos 身份验证的详细信息,请参阅配置负载平衡客户端访问服务器的 Kerberos 身份验证

有关 RollAlternateServiceAccountCredential.ps1 脚本的详细信息,请参阅在命令行管理程序中使用 RollAlternateserviceAccountCredential.ps1 脚本

 © 2010 Microsoft Corporation。保留所有权利。