如果您需要在 Web 站点上的客户端证书,或者如果您在 Windows Server 2003 中使用 IAS,客户端无法建立连接

针对 Windows Server 2003 的支持已于 2015 年 7 月 14 日终止。

Microsoft 已于 2015 年 7 月 14 日终止了对于 Windows Server 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 933430
重要 本文包含有关如何修改注册表的信息。请确保备份注册表之前对其进行修改。请确保您知道如何出现问题时还原注册表。有关如何备份、 还原和修改注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表的说明
症状
请考虑下面的方案。

方案 1

  • 您具有 Microsoft Internet Information Services (IIS) 6.0 Web 站点使用安全套接字层 (SSL) 协议对客户端通信进行加密。
  • 在的安全通信对话框中选择了要求客户端证书选项网站名称 属性对话框。
在这种情况下,您可能会遇到以下症状:
  • 客户端无法成功连接到网站。
  • 承载网站的基于 Microsoft Windows Server 2003 的计算机上记录以下警告事件:

    事件类型: 警告
    事件源: Schannel
    事件类别: 无
    事件 ID: 36885
    日期: 日期
    时间: 时间
    用户:
    计算机: 计算机名
    说明: 当要求提供客户端身份验证,此服务器发送到客户端的受信任的证书颁发机构列表。客户端使用此列表来选择受信任的服务器的客户端证书。目前,此服务器信任如此之多的证书颁发机构列表已变得太长。此列表已因此被截断。此计算机的管理员应该检查受信任的客户端身份验证的证书颁发机构,并删除那些确实不需要受信任。

注意:默认情况下,不记录安全通道 (Schannel) 警告事件。有关如何配置 Schannel 事件的日志记录的详细信息,请参阅"更多信息"一节。

方案 2

您可以使用基于 Microsoft Windows Server 2003 的计算机正在运行 Microsoft Internet 身份验证服务 (IAS) 以支持无线网络的身份验证。在这种情况下,您可能会遇到以下症状:
  • IAS 服务器无法成功地对客户端进行身份验证。因此,无线客户端计算机无法连接到无线网络成功。
  • 在 IAS 服务器上记录类似于以下警告事件:

    事件类型: 警告
    事件源: IAS
    事件类别: 无
    事件 ID: 2
    日期: 日期
    时间: 时间
    用户:
    计算机: 计算机名
    说明: 用户 jsmith@contoso.com 被拒绝访问。
    完全限定的用户的名称 = CONTOSOS\jsmithNAS IP 地址 = 10.20.30.40
    NAS 标识符 = WL1234-1
    调用发送站标识符 = 0016.462c.1650
    调用发送站标识符 = 0012.f05b.a795
    客户端的好记名称 = WL1234-1
    客户端 IP 地址 = 10.20.30.40
    NAS 端口类型 = IEEE 802.11 无线-
    NAS 端口 10037Proxy 策略名称 = = 使用 Windows 身份验证的所有用户
    身份验证提供程序 = Windows
    身份验证服务器 = <undetermined>
    策略名称 = 无线网络访问策略
    身份验证类型 = EAP
    EAP 键入 = 智能卡或其他证书
    原因代码 = 266
    原因 = 接收到的消息是意外的或格式不正确。
    有关详细信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
    数据: 0000: 26 03 09 80 &...吗?</undetermined>

  • 在 IAS 服务器上,可能记录的事件,类似于下面的警告事件:

    事件类型: 警告
    事件源: Schannel
    事件类别: 无
    事件 ID: 36885
    日期: 日期
    时间: 时间
    用户:
    计算机: 计算机名
    说明: 当要求提供客户端身份验证,此服务器发送到客户端的受信任的证书颁发机构列表。客户端使用此列表来选择受信任的服务器的客户端证书。目前,此服务器信任如此之多的证书颁发机构列表已变得太长。此列表已因此被截断。此计算机的管理员应该检查受信任的客户端身份验证的证书颁发机构,并删除那些确实不需要受信任。

注意:默认情况下,不记录安全通道 (Schannel) 警告事件。有关如何配置 Schannel 事件的日志记录的详细信息,请参阅"更多信息"一节。
原因
如果 Web 服务器或 IAS 服务器包含受信任的根证书列表中的多个项,则可能会出现此问题。在满足以下条件时,由服务器发送到客户端的受信任的证书颁发机构的列表:
  • 服务器使用传输层安全性 (TLS) / SSL 协议的网络通信进行加密。
  • 客户端证书所需的身份验证在身份验证握手过程。
此列表中的受信任的证书颁发机构表示从该服务器可以接受客户端证书的机构。由服务器进行身份验证,则客户端必须从服务器列表中已存在的证书链中到根证书的证书。

目前,则 Schannel 安全程序包支持受信任的证书颁发机构列表的最大大小是 12,228 (0x3000) 字节为单位)。

频道通过搜索本地计算机上受信任的根证书颁发机构存储区创建受信任的证书颁发机构的列表。受信任的客户端进行身份验证的每个证书添加到列表中。如果此列表的大小超过了 12,228 字节,则 Schannel 将记录警告事件 ID 36885。然后,则 Schannel 截断的受信任的根证书的列表,并将此截断的列表发送到客户端计算机。

当客户端计算机收到被截断的受信任的根证书列表时,客户端计算机可能没有存在的受信任的证书颁发者链中的证书。例如,客户端计算机可能有证书与受信任的根证书,则 Schannel 截断从受信任的证书颁发机构的列表相对应。因此,IAS 服务器无法对客户端进行身份验证。

此修补程序增加到 16k Schannel 安全缓冲区。如果超出此限制,您仍然可以在本文的症状部分中描述的问题。这一更改也已经包含在 Windows Server 2008 和 Windows Server 2008 R2。如下所述的解决方法将同样适用于 Windows Server 2008 和 Windows Server 2008 R2。


解决方案

修补程序信息

受支持的修补程序现已从 Microsoft 推出。但是,它旨在纠正本文中描述的问题。它仅应用于正经历此特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个 Windows Server 2003 服务包。

要立即解决此问题,请联系 Microsoft 客户支持服务,以获取此修复程序。Microsoft 客户支持服务的电话号码以及有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:注意: 在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能会取消可免收支持电话的费用。通常的支持费用将应用于其他支持问题和事项,不需要进行专门更新的。

系统必备组件

若要应用此修补程序,您必须具有 Windows 2003 Service Pack 1 (SP1) 或安装到计算机上的 Windows 服务器 2003 Service Pack 2 (SP2)。有关如何获取最新的 service pack,Windows Server 2003 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
889100 如何获取 Windows Server 2003 最新的服务包

重新启动要求

您必须在应用此修补程序后,重新启动计算机。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。
Windows Server 2003 SP1 的基于 x86 的版本
文件名称文件版本文件大小日期时间平台
Schannel.dll5.2.3790.2971144,8962007 年 7 月-10 月17: 27x86
Windows Server 2003 中,基于 x86 的 SP2 版本
文件名称文件版本文件大小日期时间平台
Schannel.dll5.2.3790.4115147,4562007 年 7 月-10 月17:51x86
Windows Server 2003 中,基于 x64 版本 SP1
文件名称文件版本文件大小日期时间平台服务分支
Schannel.dll5.2.3790.2971254,4642007 年 7 月-10 月03:15x64不适用
Wschannel.dll5.2.3790.2971144,8962007 年 7 月-10 月03:15x86
Windows Server 2003 中,基于 x64 版本 SP2
文件名称文件版本文件大小日期时间平台服务分支
Schannel.dll5.2.3790.2971254,4642007 年 7 月-10 月03:15x64不适用
Wschannel.dll5.2.3790.2971144,8962007 年 7 月-10 月03:15x86
Windows Server 2003 中,基于 Itanium 的 SP1 版本
文件名称文件版本文件大小日期时间平台服务分支
Schannel.dll5.2.3790.2971466,4322007 年 7 月-10 月03:16IA-64不适用
Wschannel.dll5.2.3790.2971144,8962007 年 7 月-10 月03:16x86
Windows Server 2003 中,基于 Itanium 的 SP2 版本
文件名称文件版本文件大小日期时间平台服务分支
Schannel.dll5.2.3790.4115466,4322007 年 7 月-10 月03:24IA-64不适用
Wschannel.dll5.2.3790.4115147,4562007 年 7 月-10 月03:24x86
替代方法
若要变通解决此问题,请根据您的具体情况使用下列方法之一。

方法 1: 删除某些受信任的根证书

如果您的环境中未使用部分受信任的根证书,将从 Web 服务器或 IAS 服务器将其删除。若要执行此操作,请按照下列步骤操作:
  1. 单击开始,单击运行,类型 mmc然后单击确定
  2. 文件菜单上,单击添加/删除管理单元中,然后单击添加
  3. 添加独立管理单元位置对话框中,单击证书,然后单击添加
  4. 单击计算机帐户,请单击下一步,然后单击完成
  5. 单击关闭,然后单击确定
  6. 在 Microsoft 管理控制台 (MMC) 管理单元中的控制台根节点中,展开证书 (本地计算机),展开受信任的根证书颁发机构,然后单击证书
  7. 删除您不需要具有受信任的根证书。若要执行此操作,用鼠标右键单击证书,单击删除然后单击以确认删除该证书。
注意:有一些所需的 Windows 的根证书。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
293781 所需的 Windows Server 2003、 Windows XP 和 Windows 2000 的受信任的根证书

方法 2: 配置组策略以忽略本地计算机上的受信任的证书颁发机构的列表

如果 IAS 服务器或 Web 服务器是域的成员,则可以创建一个策略,以使服务器忽略本地计算机上的受信任的证书颁发机构的列表。应用此策略时,受影响的服务器和客户端只信任企业根证书颁发机构存储区中的证书。因此,您不需要修改的单个计算机。

注意:此方法有效,只有当所有客户端计算机从同一 活动目录(AD) 目录服务域或 活动目录(AD) 目录林。组策略不应用于不位于同一 活动目录(AD) 目录林中的计算机。

若要创建此策略,请按照下列步骤。

步骤 1: 创建一个组策略对象

  1. 登录到域控制器,然后启动 活动目录(AD) 用户和计算机工具。若要执行此操作,单击开始,单击运行键入 dsa.msc然后单击确定
  2. 用鼠标右键单击要配置的组策略对象中,在其中的容器,然后单击属性。例如,右键单击域容器或组织单位的容器。
  3. 单击组策略选项卡,然后单击新建
  4. 键入策略,一个描述性名称,然后按 enter 键。
  5. 单击编辑启动组策略对象编辑器。
  6. 展开计算机配置,展开Windows 设置,展开安全设置,然后单击公钥策略
  7. 用鼠标右键单击受信任的根证书颁发机构,然后单击属性
  8. 企业根证书颁发机构,请单击,然后单击确定
  9. 退出组策略对象编辑器。
  10. 单击确定以关闭对象名称 属性对话框。

步骤 2: 将根证书添加到"受信任的根证书颁发机构"证书存储区

  1. 将任何所需的根证书导出从相应服务器的本地计算机存储区中。这包括内部证书颁发机构 (Ca) 的根证书,并为您的组织需要的公用证书颁发机构的根证书。
  2. 登录到域控制器,然后启动 活动目录(AD) 用户和计算机工具。
  3. 用鼠标右键单击该容器,其中包含您在中创建的组策略对象"步骤 1: 创建组策略对象"部分,然后单击属性
  4. 单击组策略选项卡,单击组策略对象中,然后单击编辑
  5. 展开计算机配置,展开Windows 设置,展开安全设置,然后单击公钥策略
  6. 受信任的根证书颁发机构中,右键单击,然后单击导入
  7. 按照证书导入向导导入根证书或在步骤 2a 中导出的证书的步骤。
  8. 退出组策略对象编辑器。
  9. 单击确定以关闭对象名称 属性对话框。
注意:有一些所需的 Windows 的根证书。您必须将这些证书添加到您创建的策略。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
293781 所需的 Windows Server 2003、 Windows XP 和 Windows 2000 的受信任的根证书

方法 3: 配置 Schannel 不再在 TLS/SSL 握手过程中发送的受信任的根证书颁发机构列表

警告如果使用注册表编辑器或其他方法错误地修改了注册表,可能会出现严重问题。这些问题可能要求您重新安装操作系统。Microsoft 不能保证这些问题能够得到解决。修改注册表的风险由您自己承担。

在运行 IIS 的服务器或 IAS 服务器在其遇到此问题,则设置为 false 将以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL


值名称: SendTrustedIssuerList
值类型: REG_DWORD
值数据: 0 (假)
默认情况下,注册表中没有列出此项。默认情况下,此值为 1 (True)。此注册表项控制控制服务器是否向客户端发送的受信任的证书颁发机构的列表的标记。当该注册表项设置为 False 时,服务器不发送到客户端的受信任的证书颁发机构的列表。这种行为可能会影响客户端证书的请求的响应方式。例如,如果 Internet Explorer 收到请求进行客户端身份验证时,Internet Explorer 之一的从服务器列表中的证书颁发机构链中显示出现的客户端证书。但是,如果服务器不发送的受信任的证书颁发机构列表,Internet Explorer 将显示在客户端计算机安装的所有客户端证书。

若要设置该注册表项,请按照下列步骤操作:
  1. 单击开始,单击运行,类型 注册表编辑器然后单击确定
  2. 找到并单击以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
  3. 编辑菜单上,指向新建,然后单击DWORD 值
  4. 键入 SendTrustedIssuerList然后按 enter 键名称的注册表项。
  5. SendTrustedIssuerList,右键单击,然后单击修改
  6. 数值数据框中,键入 0 如果值不是已经显示,,然后单击确定
  7. 退出注册表编辑器。
有关 SCHANNEL 注册表项的详细信息,请访问下面的 Microsoft Web 站点:
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。
更多信息
Windows Server 2003 旨在更新根证书时自动检查 Microsoft Windows 更新 Web 站点上的受信任的证书颁发机构的列表。然后,Windows 安装适当的根证书,该证书验证用户的程序后。

注意:在 Windows Server 2003 证书颁发机构的列表不能超过 12,228 (0x3000) 字节为单位)。根证书更新时,受信任的证书颁发机构的列表可能会明显增加。因此,该列表可能会变得太长。在这种情况下,Windows 将截断该列表。这种行为可能会导致授权的问题。在这种情况下,您可能会遇到"症状"一节中描述的问题。

如何配置 Schannel 事件的日志记录

警告如果使用注册表编辑器或其他方法错误地修改了注册表,可能会出现严重问题。这些问题可能要求您重新安装操作系统。Microsoft 不能保证这些问题能够得到解决。修改注册表的风险由您自己承担。

要配置 Schannel 的系统日志中记录警告事件,请设置以下注册表项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel


值名称: EventLogging
值类型: REG_DWORD
值数据: 0x3
注意:0x3 值配置 Schannel 日志警告事件和错误事件。

有关如何配置 Schannel 事件的日志记录的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
260729 如何启用 IIS 日志的频道事件
参考
有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
931125 Microsoft 根证书计划成员 (2007 年 1 月)
有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
814394 当您使用 EAP-TLS 或 PEAP 使用 EAP-TLS 证书要求

警告:本文已自动翻译

属性

文章 ID:933430 - 上次审阅时间:03/15/2015 10:28:00 - 修订版本: 4.0

Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Web Edition, Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems, Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems, Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Standard x64 Edition

  • kbautohotfix kbeventlog kbtshoot kberrmsg kbprb kbHotfixServer kbmt KB933430 KbMtzh
反馈