启动与系统组件

CS 无法在计算机上启动 - Windows Server

· 52CE 我爱测

本文提供了证书服务(CS)可能无法在运行 Windows Server 的计算机上启动的问题的解决方案。 原始 KB 编号: 842210 现象 在运行 Windows Server 的计算机上,证书服务可能无法启动。 此外,可能会在应用程序日志事件查看器中记录以下错误消息。 Active Directory 证书服务未启动:无法加载或验证当前的 CA 证书。 Contoso CA 密钥集不存在0x80090016(-2146893802 NTE\BAD\

本文提供了证书服务(CS)可能无法在运行 Windows Server 的计算机上启动的问题的解决方案。

原始 KB 编号: 842210

现象

在运行 Windows Server 的计算机上,证书服务可能无法启动。

此外,可能会在应用程序日志事件查看器中记录以下错误消息。

Active Directory 证书服务未启动:无法加载或验证当前的 CA 证书。 Contoso CA 密钥集不存在0x80090016(-2146893802 NTE_BAD_KEYSET)。

原因

在证书服务启动之前,它枚举已颁发给证书颁发机构(CA)的所有密钥和证书,即使密钥和证书已过期。 如果其中任何一个证书已从本地计算机个人证书存储中删除,则证书服务不会启动。

解决方法

若要解决此问题,请验证注册表中的证书指纹数是否等于已颁发给 CA 的证书数。 如果缺少任何证书,请将缺少的证书导入到本地计算机个人证书存储中。 导入缺少的证书后,使用 certutil -repairstore 命令修复导入的证书与关联的私钥存储之间的链接。

若要解决此问题,请执行这些步骤。

步骤 1:查找缺少的证书

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关详细信息,请参阅 如何在 Windows 中备份和还原注册表。

证书指纹指示已颁发给此 CA 的所有证书。 每次续订证书时,都会将新的证书指纹添加到注册表中的 CaCertHash 列表中。 此列表中的条目数必须与颁发给 CA 的证书数相等,并且这些证书列在本地计算机个人证书存储中。

若要查找缺少的证书,请执行以下步骤:

  1. 选择“开始”,键入 regedit,然后按 Enter。

  2. 找到并选择以下子项:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Your_Certificate_Authority_Name>

  3. 在右窗格中,双击 CaCertHash。

  4. 记下值数据列表包含的证书指纹数。

  5. 启动命令提示符。

  6. 键入以下命令,然后按 Enter:

    certutil -store
    

    将本地计算机个人证书存储中列出的证书数与 CaCertHash 注册表项中列出的证书指纹数进行比较。 如果数字不同,请转到 步骤 2:导入缺少的证书。 如果数字相同,请转到 步骤 3:修复链接。

步骤 2:导入缺少的证书

  1. 选择“开始”,键入 mmc,然后按 Enter。
  2. 在“文件”菜单中,选择“添加/删除管理单元”。
  3. 在管理单元列表中,选择“证书**”**,然后选择“添加”。
  4. **出现“证书”**管理单元对话框时,选择“计算机帐户”,然后选择“下一步>完成”。
  5. 选择“确定”。 证书目录现已添加到Microsoft管理控制台(MMC)。
  6. 展开**“证书个人”,右键单击“证书>”,指向“所有任务**”,然后选择“导入”。
  7. 在“欢迎”页上,选择“下一步”。
  8. 在**“要导入的文件”页上,在“文件名”框中键入要导入的证书文件的完整路径,然后选择“下一步”。 而是选择“浏览”**,搜索文件,然后选择“下一步”。
  9. 如果要导入的文件是个人信息 Exchange-PKCS #12 (*)。PFX) 文件,系统会提示输入密码。 键入密码,选择 将此密钥标记为可 导出的导入选项,然后选择“ 下一步”。
  10. 在 “证书存储 ”页上,选择“ 下一步”。
  11. 在 “完成证书导入向导 ”页上,选择“ 完成”。

注意

默认情况下,CA 将其 CA 证书发布到 %systemroot%\System32\CertSvc\CertEnroll 文件夹。 你可能会在该文件夹中找到缺少的证书。

步骤 3:修复链接

若要修复链接,请执行以下步骤:

  1. 打开命令提示符。

  2. 键入以下命令,然后按 Enter:

    cd %systemroot%\system32\certsrv\certenroll
    
  3. 记下 certenroll* 文件夹中类似于以下内容的*证书:

    <Your_Server>. <Your_Domain>.com_rootca.crt

  4. 键入以下命令,然后在每个命令后按 Enter :

    certutil -addstore my %systemroot%\system32\certsrv\certenroll\Your_Server.Your_Domain.com_rootca.crt
    
    certutil -dump %systemroot%\system32\certsrv\certenroll\Your_Server.Your_Domain.com_rootca.crt
    

    <Your_Server>.<Your_Domain>.com_rootca.crt是步骤 3 中记录的 certenroll* 文件夹中的证书*的名称。

  5. 在最后一个命令的输出中,在末尾附近,你将看到如下所示的行:

    Key Id Hash(sha1): ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b

    数据 Key Id Hash 特定于计算机。 记下此行。

  6. 键入以下命令,包括引号,然后按 Enter:

    %systemroot%\system32\certutil -repairstore my "<Key_Id_Hash_Data>"
    

    在此命令中, Key_Id_Hash_Data 是你在步骤 5 中记录的行。 例如,请键入以下内容:certutil -repairstore my "ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b"

    然后,你将收到以下输出:

    CertUtil: -repairstore command completed successfully.
    
  7. 若要验证证书,请键入以下命令,然后按 Enter:

    certutil -verifykeys
    

    此命令运行后,你将收到以下输出:

    CertUtil: -verifykeys command completed successfully.
    

步骤 4:启动证书服务服务

  1. 选择开始,指向管理工具,然后选择服务。
  2. 右键单击 “证书服务”,然后选择“ 启动”。

详细信息

如果满足以下条件之一,则必须解除授权并替换 CA:

  • 找不到缺少的证书。
  • 无法重新安装证书。
  • certutil -repairstore命令无法完成,因为私钥已被删除。

注意

如果此问题发生在公钥基础结构 (PKI) 层次结构的根 CA 上,如果无法修复该问题,则必须替换整个 PKI 层次结构。 有关如何删除 PKI 层次结构的详细信息,请参阅 如何解除 Windows 企业证书颁发机构的授权并删除所有相关对象。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。