本文介绍如何在 Windows 7 和 Windows Server 2008 R2 中为 Kerberos 身份验证启用 DES 加密。
适用于: Windows 7 Service Pack 1、Windows Server 2008 R2 Service Pack 1原始 KB 数: 977321
总结
从 Windows 7 开始,Windows Server 2008 R2 和所有更高版本的 Windows 操作系统都禁用了用于 Kerberos 身份验证的数据加密标准(DES)。 本文介绍在应用程序、安全和系统日志中可能会收到以下事件的各种方案,因为 DES 加密已禁用:
- KDCEVENT_UNSUPPORTED_ETYPE_REQUEST_TGS
- KDCEVENT_NO_KEY_INTERSECTION_TGS
此外,本文介绍如何在 Windows 7 和 Windows Server 2008 R2 中为 Kerberos 身份验证启用 DES 加密。 有关详细信息,请参阅本文的“症状”、“原因”和“解决方法”部分。
现象
请考虑下列情形:
- 服务使用用户帐户或计算机帐户,该帐户仅在运行 Windows 7 或 Windows Server 2008 R2 的计算机上配置了 DES 加密。
- 服务使用仅为 DES 加密配置的用户帐户或计算机帐户,并且该帐户与基于 Windows Server 2008 R2 的域控制器一起存在于域中。
- 运行 Windows 7 或 Windows Server 2008 R2 的客户端使用仅为 DES 加密配置的用户帐户或计算机帐户连接到服务。
- 信任关系仅针对 DES 加密进行配置,并且包括运行 Windows Server 2008 R2 的域控制器。
- 应用程序或服务硬编码,仅使用 DES 加密。
在上述任一方案中,你可能会在 应用程序、安全和系统日志中连同 Microsoft-Windows-Kerberos-Key-Distribution-Center 源一起收到以下事件:
| ID | 符号名称 | 消息 |
|---|---|---|
| 27 | KDCEVENT_UNSUPPORTED_ETYPE_REQUEST_TGS | 处理目标服务器 %1 的 TGS 请求时,帐户 %2 没有用于生成 Kerberos 票证的合适密钥(缺少的密钥 ID 为 %3)。 请求的 etype 为 %4。 可用的帐户类型为 %5。事件 ID 27 - KDC 加密类型配置 |
| 16 | KDCEVENT_NO_KEY_INTERSECTION_TGS | 处理目标服务器 %1 的 TGS 请求时,帐户 %2 没有用于生成 Kerberos 票证的合适密钥(缺少的密钥 ID 为 %3)。 请求的 etype 为 %4。 可用的帐户类型为 %5。 更改或重置 %6 的密码将生成正确的密钥。事件 ID 16 - Kerberos 密钥完整性 |
原因
默认情况下,以下计算机上禁用 Kerberos 的 DES 加密安全设置:
- 运行 Windows 7 的计算机
- 运行 Windows Server 2008 R2 的计算机
- 运行 Windows Server 2008 R2 的域控制器
注意
Windows 7 和 Windows Server 2008 R2.By 默认值中存在对 Kerberos 的加密支持,Windows 7 使用以下高级加密标准(AES)或 RC4 密码套件进行“加密类型”和“etypes”:
- AES256-CTS-HMAC-SHA1-96
- AES128-CTS-HMAC-SHA1-96
- RC4-HMAC
仅为 DES 加密配置的服务会失败,除非满足以下条件:
- 该服务重新配置为支持 RC4 加密或支持 AES 加密。
- 服务帐户域的所有客户端计算机、所有服务器和所有域控制器都配置为支持 DES 加密。
默认情况下,Windows 7 和 Windows Server 2008 R2 支持以下密码套件:如果需要,可以在 Windows 7 中启用 DES-CBC-MD5 密码套件和 DES-CBC-CRC 密码套件。
解决方法
强烈建议检查环境中是否需要 DES 加密,还是检查特定服务是否需要 DES 加密。 检查服务是否可以使用 RC4 加密或 AES 加密,或者检查供应商是否有具有更强加密的身份验证替代项。
基于 Windows Server 2008 R2 的域控制器需要修补程序 978055 才能正确处理从运行 Windows Server 2003 的域控制器复制的加密类型信息。 请参阅下面的详细信息部分。
-
确定应用程序是否硬编码以仅使用 DES 加密。 但是,在运行 Windows 7 或密钥分发中心(KDC)的客户端上,默认设置处于禁用状态。
若要检查是否受此问题影响,请收集一些网络跟踪,然后检查类似于以下示例跟踪的跟踪:
帧 1 {TCP:48, IPv4:47} <SRC IP DEST IP><> KerberosV5 KerberosV5:TGS 请求领域: CONTOSO.COM Sname: HTTP/<hostname。<>FQDN>
帧 2 {TCP:48, IPv4:47} <DEST IP SRC IP><> KerberosV5 KerberosV5:KRB_ERROR - KDC_ERR_ETYPE_NOSUPP (14)
0.0000000 {TCP:48, IPv4:47} <源 IP 目标 IP<>> KerberosV5 KerberosV5:TGS 请求领域: <fqdn> Sname: HTTP/<hostname。<>fqdn> -Etype: +SequenceOfHeader: +EType: aes256-cts-hmac-sha1-96 (18) +EType: aes128-cts-hmac-sha1-96 (17) +EType: rc4-hmac (23) +EType: rc4-hmac-exp (24) +EType: rc4 hmac old exp (0xff79) +TagA: +EncAuthorizationData:
-
确定是否仅为 DES 加密配置用户帐户或计算机帐户。
在“Active Directory 用户和计算机”管理单元中,打开用户帐户属性,然后检查是否在“帐户”选项卡下设置了“使用此帐户的 Kerberos DES 加密类型”。
如果你得出结论,你受此问题影响,并且必须启用 KERberos 身份验证的 DES 加密类型,请启用以下组策略,将 DES 加密类型应用于运行 Windows 7 或 Windows Server 2008 R2 的所有计算机:
-
在组策略管理控制台(GPMC)中,找到以下位置:
计算机配置\ Windows 设置\ 安全设置\ 本地策略\ 安全选项
-
单击以选择“网络安全:配置 Kerberos”选项允许的加密类型。
-
单击以选择“ 定义这些策略设置 ”和加密类型的所有六个复选框。
-
单击“确定”。 关闭 GPMC。
注意
策略将SupportedEncryptionTypes注册表项设置为0x7FFFFFFF的值。 SupportedEncryptionTypes注册表项位于以下位置:
*HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\parameters*
根据方案,你可能必须在域级别设置此策略,才能将 DES 加密类型应用于运行 Windows 7 或 Windows Server 2008 R2 的所有客户端。 或者,可能需要在运行 Windows Server 2008 R2 的域控制器的组织单位(OU)上设置此策略。
详细信息
以下两种配置中遇到仅限 DES 的应用程序兼容性问题:
- 仅对 DES 加密对调用应用程序进行硬编码。
- 运行服务的帐户配置为仅使用 DES 加密。
若要使 Kerberos 身份验证正常工作,必须满足以下加密类型条件:
- 客户端和客户端上验证器的域控制器之间存在一种常见类型。
- 域控制器和资源服务器之间存在用于加密票证的常见类型。
- 客户端与会话密钥的资源服务器之间存在一种常见类型。
请考虑以下情况:
| 角色 | 操作系统 | Kerberos 支持的加密级别 |
|---|---|---|
| DC | Windows Server 2003 | RC4 和 DES |
| 客户端 | Windows 7 | AES 和 RC4 |
| 资源服务器 | J2EE | DES |
在这种情况下,RC4 加密满足条件 1,DES 加密满足条件 2。 第三个条件失败,因为服务器是仅 DES,并且客户端不支持 DES。
如果域中满足以下条件,则必须在每个基于 Windows Server 2008 R2 的域控制器上安装修补程序978055:
- 有一些已启用 DES 的用户或计算机帐户。
- 在同一域中,有一个或多个域控制器运行 Windows 2000 Server、Windows Server 2003 或 Windows Server 2003 R2。
注意
- 基于 Windows Server 2008 R2 的域控制器需要修补程序978055才能正确处理从运行 Windows Server 2003 的域控制器复制的加密类型信息。
- 基于 Windows Server 2008 的域控制器不需要此修补程序。
- 如果域只有基于 Windows Server 2008 的域控制器,则不需要此修补程序。
有关详细信息,请单击下面的文章编号,查看相应的 Microsoft 知识库文章:
978055 修复:Windows Server 2008 R2 域控制器加入域后,不能在 Windows Server 2003 域中对使用 DES 加密的 Kerberos 身份验证类型的用户帐户进行身份验证