如果禁用 Kerberos 的 DES,则会记录 KDC 事件 ID 16 或 27

本文介绍如何在 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 的域控制器复制的加密类型信息。 请参阅下面的详细信息部分。

  1. 确定应用程序是否硬编码以仅使用 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:

  2. 确定是否仅为 DES 加密配置用户帐户或计算机帐户。

    在“Active Directory 用户和计算机”管理单元中,打开用户帐户属性,然后检查是否在“帐户”选项卡下设置了“使用此帐户的 Kerberos DES 加密类型”。

如果你得出结论,你受此问题影响,并且必须启用 KERberos 身份验证的 DES 加密类型,请启用以下组策略,将 DES 加密类型应用于运行 Windows 7 或 Windows Server 2008 R2 的所有计算机:

  1. 在组策略管理控制台(GPMC)中,找到以下位置:

    计算机配置\ Windows 设置\ 安全设置\ 本地策略\ 安全选项

  2. 单击以选择“网络安全:配置 Kerberos”选项允许的加密类型。

  3. 单击以选择“ 定义这些策略设置 ”和加密类型的所有六个复选框。

  4. 单击“确定”。 关闭 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 身份验证正常工作,必须满足以下加密类型条件:

  1. 客户端和客户端上验证器的域控制器之间存在一种常见类型。
  2. 域控制器和资源服务器之间存在用于加密票证的常见类型。
  3. 客户端与会话密钥的资源服务器之间存在一种常见类型。

请考虑以下情况:

角色 操作系统 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 身份验证类型的用户帐户进行身份验证