联机响应程序服务不会返回所有不包括在 CRL 中的证书确定性非常好

症状

请考虑以下情形:

  • 您必须在运行 Windows Server 2008 R2 服务器或 Windows Server 2012 R2 上安装了 Microsoft 联机响应程序服务。

  • 服务器用于配置和管理(OCSP) 验证。


在这种情况下,联机响应程序服务不会返回确定值适用于所有未包括在证书吊销列表 (CRL) 的证书。

原因

发生此问题是因为 OCSP 不验证与确认源实际上由其对应的证书颁发机构颁发证书。相反,如果证书不包括在 CRL 中,联机响应程序服务将假定该证书有效,并且返回的值为良好。

解决方案

要解决 Windows 8.1 或 Windows Server 2012 R2 中的此问题,请安装更新 2967917。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

7 月 2014年累积更新 Windows RT 8.1、 Windows 8.1 和 Windows Server 2012 R2
若要解决此问题,Windows 7 或 Windows Server 2008 R2 中的,安装在此文章中的"修复程序信息"部分中介绍的修复程序。

安装此修补程序之前,您必须配置 OCSP 服务读取由证书颁发机构颁发的序列号。若要执行此操作,请按照此部分以创建目录的位置,以保存序列号文件并创建指向该目录的注册表项。

备注:

  • 目录可以位于网络共享上,或者驻留在本地计算机上。如果您设置了阵列配置,建议您存放在网络共享目录,以便所有阵列成员可以具有"都读取"访问权限。

  • 无论目录所在的位置,确保 OCSP 服务具有对该目录的读取权限。注册表设置将不应用于任何 Microsoft 联机响应程序不应用此修补程序的修补程序中。

配置 OCSP 服务

已配置 OCSP 服务证书颁发机构的计算机上运行以下步骤。

步骤 1︰ 目录结构

  1. 启动记事本,然后将下面的示例脚本粘贴到新文档︰

    param(    [ValidateScript({Test-Path $_})]
    [String] $Path
    )
    pushd $Path
    dir | foreach {
    remove-item $_ -force
    }
    certutil.exe -out serialnumber -restrict "Disposition = 20" -view | foreach {
    if($_ -match 'Serial Number: "([^"]+)"') {
    New-Item -type File $matches[1] | out-null
    }
    }
    popd
  2. 将新文档另存为Certs.ps1。

  3. 创建一个目录是用来存储所有颁发的序列号对应的空文件。

  4. 运行 Certs.ps1 脚本。若要执行此操作,请在 Windows PowerShell 运行以下命令︰

    Certs.ps1 < 在步骤 3 中创建的目录位置 >

  5. 检查步骤 3 以确认这些文件符合颁发的序列号中所创建的目录。

    注意:如果您有在您的环境中承载的多个 Ca,请确保其对应的序列号目录不同。不共享相同的目录之间不同的 Ca。

  6. 运行脚本的 CA 计算机上,并将所保存的文件上载通过给予限制性 Acl。不应编辑该文件。请确保 Microsoft 联机响应程序的所有计算机都可以都访问此位置。

有关此过程的详细信息

Microsoft 联机响应程序返回未知的值为所颁发的所有证书、 但尚未在步骤 6 中创建的文件。必须定期时间间隔运行此脚本,并将其刷新为 Microsoft 联机响应程序提供的最新状态。此时间间隔设置取决于您的特定部署环境。我们建议选择任意位置从四个小时在合适的时间间隔以值的下一个 CRL 发布日期。

第 2 步︰ 注册表

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

  1. 退出所有 Windows 应用程序。

  2. 单击开始,单击运行,键入regedit,然后单击确定

  3. 找到并选择下面的注册表子项︰

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OcspSvc\Responder

  4. 单击您要为其创建的目录结构的证书颁发机构 (CA)。

  5. 右键单击提供者节点,指向新建,然后单击多字符串值

  6. 键入IssuedSerialNumbersDirectories,,然后按 enter 键。

  7. IssuedSerialNumbersDirectories,用鼠标右键单击,然后单击修改

  8. 数值数据框中,键入的路径的目录,该目录结构过程的步骤 3 中创建并包含颁发的序列号,然后单击确定

    为目录路径,请使用以下格式︰


    \\<computername>\<directorylocation>例如,使用类似于以下内容的路径︰


    \\contoso-ocspfileserver\SerialNumbers

  9. 文件菜单上,单击退出以退出注册表编辑器。

  10. 安装本文中提到的修复程序包。

按照"目录结构"和"注册表"步骤后,请安装本文中提到该修补程序包。

结果

安装此修复程序后,联机响应程序服务应执行以下任务︰

  • 返回值的良好验证证书

  • 返回值包括在 CRL 中的证书的吊销

  • 返回所有无法验证其他证书的未知值

修补程序信息

受支持的修补程序可从 Microsoft 支持。然而,此修补程序仅用于解决本文中描述的问题。此修复程序仅适用于遇到本文中描述的问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。

注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请转到下面的 Microsoft 网站:

注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

系统必备组件

若要应用此修补程序,您必须为 Windows 7 或安装 Windows Server 2008 R2 。

重启要求

应用此修补程序后,不需要重新启动计算机。

修补程序替换信息

此修补程序不替换任何以前发布的修补程序。

此修复程序的英语 (美国) 版本将安装具有下表中列出的属性的文件。这些文件的日期和时间以协调世界时 (UTC) 列出。您的本地计算机上这些文件的日期和时间以您的本地时间加上当前夏令时 (DST) 偏差显示。此外,当您对文件执行某些操作时,日期和时间可能会更改。

Windows 7 和 Windows Server 2008 R2 文件信息和备注重要:相同的软件包中包含 Windows 7 的修复程序和 Windows Server 2008 R2 的修复程序。但是,热修复程序请求页上的修补程序在这两个操作系统中列出。要请求到一个或两个操作系统的系统应用此修补程序包,请选择在"Windows 7/Windows Server 2008 R2"页上列出的修复程序。"应用于"中的部分文章,以确定每个修补程序适用的实际操作系统将始终引用。

  • 通过检查下表中显示的文件版本号,可以识别应用于特定产品、 SR_Level (RTM、 SPn) 和服务 (LDR、 GDR) 的分支的文件。

  • GDR 服务分支包含那些广泛发布以解决广泛分布的至关重要问题的修复。LDR 服务分支包含除了广泛发布的修补程序的修补程序。

  • 清单文件 (.manifest) 和菊花安装的文件 (.mum) 为每个环境则是"附加的文件的 Windows 7 和 Windows Server 2008 R2 信息"部分中单独列出。MUM 和 MANIFEST 文件以及关联的安全目录 (.cat) 文件对维护更新组件的状态极其重要。对其属性没有列出的安全目录文件已签署 Microsoft 数字签名。

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息

此修补程序提供了设计更改,使 Microsoft OCSP 响应程序意识的所有证书有关的以下条件为真︰

  • 它们是由 CA 颁发的。

  • 他们没有被吊销。

  • 它们是目前在他们自己的有效期。

参考资料

了解 Microsoft 用于描述软件更新。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×