如何解除 Windows 企业证书颁发机构的授权并删除所有相关对象

此分步文章介绍如何解除 Microsoft Windows 企业 CA 的授权,以及如何从 Active Directory 目录服务中删除所有相关对象。

适用于: Windows Server
原始 KB 编号: 889250

摘要

(CA) 卸载证书颁发机构时,CA 颁发的证书通常仍然未完成。 如果各种公钥基础结构客户端计算机处理未完成的证书,则验证将失败,并且不会使用这些证书。

本文介绍如何吊销未完成的证书,以及如何完成成功卸载 CA 所需的各种其他任务。 此外,本文还介绍了几个实用工具,可用于帮助从域中删除 CA 对象。

步骤 1 - 撤销企业 CA 颁发的所有活动证书

  1. 选择“ 开始”,指向 “管理工具”,然后选择“ 证书颁发机构”。
  2. 展开 CA,然后选择“颁发的证书”文件夹。
  3. 在右窗格中,选择其中一个颁发的证书,然后按 Ctrl+A 选择所有颁发的证书。
  4. 右键单击所选证书,选择“ 所有任务”,然后选择“ 吊销证书”。
  5. 在“ 证书吊销 ”对话框中,选择“ 停止操作 ”作为吊销原因,然后选择“ 确定”。

步骤 2 - 增加 CRL 发布间隔

  1. 在证书颁发机构 Microsoft 管理控制台 (MMC) 管理单元中,右键单击“ 吊销的证书 ”文件夹,然后选择“ 属性”。
  2. “CRL 发布间隔 ”框中,键入适当的长值,然后选择“ 确定”。

注意

证书吊销列表 (CRL) 的生存期应长于已吊销证书的剩余生存期。

步骤 3 - 发布新的 CRL

  1. 在“证书颁发机构 MMC”管理单元中,右键单击“吊销的证书”文件夹。
  2. 选择“ 所有任务”,然后选择“ 发布”。
  3. “发布 CRL ”对话框中,选择“ 新建 CRL”,然后选择“ 确定”。

步骤 4 - 拒绝任何挂起的请求

默认情况下,企业 CA 不存储证书请求。 但是,管理员可以更改此默认行为。 若要拒绝任何挂起的证书请求,请执行以下步骤:

  1. 在“证书颁发机构 MMC”管理单元中,选择“挂起的请求”文件夹。
  2. 在右窗格中,选择其中一个挂起的请求,然后按 Ctrl+A 选择所有挂起的证书。
  3. 右键单击所选请求,选择“ 所有任务”,然后选择“ 拒绝请求”。

步骤 5 - 从服务器卸载证书服务

  1. 若要停止证书服务,请选择“ 开始”,选择“ 运行”,键入 cmd,然后选择“ 确定”。

  2. 在命令提示符下,键入 certutil -shutdown,然后按 Enter。

  3. 在命令提示符下,键入 certutil -getreg CA\CSP\Provider,然后按 Enter。 请注意输出中的 “提供程序 ”值。 例如:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\Fabrikam Root CA1 G2\csp:
    
      Provider REG_SZ = Microsoft Software Key Storage Provider
    CertUtil: -getreg command completed successfully.
    

    如果值为 Microsoft 强加密提供程序Microsoft 增强型加密提供程序 v1.0,请键入 CertUtil -Key ,然后按 Enter。
    如果值为 Microsoft 软件密钥存储提供程序,请键入 CertUtil -CSP KSP -Key ,然后按 Enter。
    如果值是其他值,请键入 CertUtil -CSP <PROVIDER NAME> -Key 并按 Enter。

    此命令将显示所有已安装的加密服务提供程序的名称 (CSP) 以及与每个提供程序关联的密钥存储。 列出的密钥存储区中将列出 CA 的名称。 该名称将多次列出,如以下示例所示:

    (1) Microsoft 基本加密提供程序 v1.0:
    1a3b2f44-2540-408b-8867-51bd6b6ed413
    MS IIS DCOM ClientSYSTEMS-1-5-18
    MS IIS DCOM 服务器
    Windows2000 企业版根 CA
    MS IIS DCOM ClientAdministratorS-1-5-21-436374069-839522115-1060284298-500

    afd1bc0a-a93c-4a31-8056-c0b9ca632896
    Microsoft Internet Information Server
    NetMon
    MS IIS DCOM ClientAdministratorS-1-5-21-842925246-1715567821-839522115-500

    (5) Microsoft 增强加密提供程序 v1.0:
    1a3b2f44-2540-408b-8867-51bd6b6ed413
    MS IIS DCOM ClientSYSTEMS-1-5-18
    MS IIS DCOM 服务器
    Windows2000 企业版根 CA
    MS IIS DCOM ClientAdministratorS-1-5-21-436374069-839522115-1060284298-500

    afd1bc0a-a93c-4a31-8056-c0b9ca632896
    Microsoft Internet Information Server
    NetMon
    MS IIS DCOM ClientAdministratorS-1-5-21-842925246-1715567821-839522115-500

  4. 删除与 CA 关联的私钥。 为此,请在命令提示符下键入以下命令,然后按 Enter:

    certutil -delkey CertificateAuthorityName
    

    注意

    如果 CA 名称包含空格,请将名称括在引号内。

    在此示例中,证书颁发机构名称为 Windows2000 企业根 CA。 因此,此示例中的命令行如下所示:

    certutil -delkey "Windows2000 Enterprise Root CA"
    
  5. 再次列出密钥存储以验证 CA 的私钥是否已删除。

  6. 删除 CA 的私钥后,卸载证书服务。 为此,请按照以下步骤操作,具体取决于正在运行的 Windows Server 版本。

    如果要卸载企业 CA,则企业管理员中的成员身份或等效成员身份是完成此过程所需的最低要求。 有关详细信息,请参阅实现基于角色的管理

    若要卸载 CA,请执行以下步骤:

    1. 选择“开始”,指向“管理工具”,然后选择“服务器管理器”。
    2. “角色摘要”下,选择“ 删除角色” 以启动“删除角色向导”,然后选择“ 下一步”。
    3. 选择以清除“Active Directory 证书服务检查”框,然后选择“下一步”。
    4. “确认删除选项” 页上,查看信息,然后选择“ 删除”。
    5. 如果 Internet Information Services (IIS) 正在运行,并且系统会提示你在继续卸载过程之前停止服务,请选择“ 确定”。
    6. 完成“删除角色向导”后,重启服务器。 这将完成卸载过程。

    如果在单个服务器上安装了多个 Active Directory 证书服务 (AD CS) 角色服务,则过程会略有不同。 若要卸载 CA 但保留其他 AD CS 角色服务,请执行以下步骤。

    注意

    必须使用与安装 CA 的用户相同的权限登录才能完成此过程。 如果要卸载企业 CA,则企业管理员中的成员身份或等效成员身份是完成此过程所需的最低要求。 有关详细信息,请参阅实现基于角色的管理

    1. 选择“开始”,指向“管理工具”,然后选择“服务器管理器”。
    2. “角色摘要”下,选择“ Active Directory 证书服务”。
    3. “角色服务”下,选择“ 删除角色服务”。
    4. 选择以清除“证书颁发机构检查”框,然后选择“下一步”。
    5. “确认删除选项” 页上,查看信息,然后选择“ 删除”。
    6. 如果 IIS 正在运行,并且系统提示你在继续卸载过程之前停止服务,请选择“ 确定”。
    7. 完成“删除角色向导”后,必须重启服务器。 这将完成卸载过程。

    如果其余角色服务(如联机响应程序服务)配置为使用卸载的 CA 中的数据,则必须重新配置这些服务以支持其他 CA。 卸载 CA 后,以下信息将保留在服务器上:

    • CA 数据库。
    • CA 公钥和私钥。
    • 个人存储中的 CA 证书。
    • 如果在 AD CS 设置过程中指定了共享文件夹,则共享文件夹中的 CA 证书。
    • 受信任的根证书颁发机构存储中的 CA 链根证书。
    • CA 链的中间证书在中间证书颁发机构存储中。
    • CA 的 CRL。

    默认情况下,此信息保留在服务器上,以防卸载然后重新安装 CA。 例如,如果要将独立 CA 更改为企业 CA,可以卸载并重新安装 CA。

步骤 6 - 从 Active Directory 中删除 CA 对象

在作为域成员的服务器上安装 Microsoft 证书服务时,在 Active Directory 的配置容器中创建多个对象。

这些对象如下所示:

  • certificateAuthority 对象

    • 位于 CN=AIA,CN=Public Key Services,CN=Services,CN=Configuration,DC=ForestRootDomain。
    • 包含 CA 的 CA 证书。
    • 已发布机构信息访问 (AIA) 位置。
  • crlDistributionPoint 对象

    • 位于 CN=ServerName,CN=CDP,CN=公钥服务,CN=服务,CN=配置,DC=ForestRoot,DC=com。
    • 包含 CA 定期发布的 CRL。
    • 已发布 CRL 分发点 (CDP) 位置。
  • certificationAuthority 对象

    • 位于 CN=证书颁发机构,CN=公钥服务,CN=服务,CN=配置,DC=ForestRoot,DC=com。
    • 包含 CA 的 CA 证书。
  • pKIEnrollmentService 对象

    • 位于 CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=ForestRoot,DC=com。
    • 由企业 CA 创建。
    • 包含有关 CA 已配置为颁发的证书类型的信息。 对此对象的权限可以控制哪些安全主体可以针对此 CA 进行注册。

卸载 CA 后,仅删除 pKIEnrollmentService 对象。 这会阻止客户端尝试针对已解除授权的 CA 进行注册。 其他对象会保留,因为 CA 颁发的证书可能仍然未完成。 必须按照 步骤 1 - 吊销企业 CA 颁发的所有活动证书部分中的过程吊销这些证书

若要使公钥基础结构 (PKI) 客户端计算机成功处理这些未完成的证书,计算机必须在 Active Directory 中找到颁发机构信息访问 (AIA) 和 CRL 分发点路径。 最好撤销所有未完成的证书,延长 CRL 的生存期,并在 Active Directory 中发布 CRL。 如果未完成的证书由各种 PKI 客户端处理,则验证将失败,并且不会使用这些证书。

如果不是在 Active Directory 中维护 CRL 分发点和 AIA 的优先级,则可以删除这些对象。 如果希望处理一个或多个以前处于活动状态的数字证书,请不要删除这些对象。

从 Active Directory 中删除所有认证服务对象

注意

在删除 Active Directory 林中的所有 CA 对象之前,不应从 Active Directory 中删除证书模板。

若要从 Active Directory 中删除所有认证服务对象,请执行以下步骤:

  1. 确定 CA 的 CACommonName。 为此,请按照下列步骤操作:

    1. 依次选择“开始”、“运行”、“打开”框中键入 cmd,然后选择“确定”。
    2. 键入 certutil,然后按 Enter。
    3. 记下属于 CA 的 Name 值。 此过程的后续步骤需要 CACommonName。
  2. 选择 “开始”,指向 “管理工具”,然后选择“ Active Directory 站点和服务”。

  3. 在“ 视图 ”菜单上,选择“ 显示服务节点”。

  4. 展开 “服务”,展开 “公钥服务”,然后选择“AIA”文件夹。

  5. 在右窗格中,右键单击 CA 的 CertificationAuthority 对象,选择“ 删除”,然后选择“ ”。

  6. 在 Active Directory 站点和服务 MMC 管理单元的左窗格中,选择 CDP 文件夹。

  7. 在右窗格中,找到安装了证书服务的服务器的容器对象。 右键单击容器,选择“ 删除”,然后选择“ ”两次。

  8. 在 Active Directory 站点和服务 MMC 管理单元的左窗格中,选择“ 证书颁发机构” 节点。

  9. 在右窗格中,右键单击 CA 的 CertificationAuthority 对象,选择“ 删除”,然后选择“ ”。

  10. 在 Active Directory 站点和服务 MMC 管理单元的左窗格中,选择“ 注册服务 ”节点。

  11. 在右窗格中,验证卸载证书服务时,是否已删除 CA 的 pKIEnrollmentService 对象。 如果未删除该对象,请右键单击该对象,选择“ 删除”,然后选择“ ”。

  12. 如果未找到所有对象,则执行这些步骤后,某些对象可能会保留在 Active Directory 中。 若要在 Active Directory 中可能有左对象的 CA 之后进行清理,请按照以下步骤确定是否保留任何 AD 对象:

    1. 在命令行中键入以下命令,然后按 Enter:

      ldifde -r "cn= CACommonName" -d "CN=Public Key Services,CN=Services,CN=Configuration,DC= ForestRoot,DC=com" -f output.ldf
      

      在此命令中, CACommonName 表示在步骤 1 中确定的 Name 值。 例如,如果 Name 值为 CA1 Contoso,请键入以下内容:

      ldifde -r "cn=CA1 Contoso" -d "cn=public key services,cn=services,cn=configuration,dc=contoso,dc=com" -f remainingCAobjects.ldf
      
    2. 在记事本中打开 剩余的CAobjects.ldf 文件。 将术语 changetype: add 替换为 changetype: delete。 然后,验证要删除的 Active Directory 对象是否合法。

    3. 在命令提示符下,键入以下命令,然后按 Enter 从 Active Directory 中删除剩余的 CA 对象:

      ldifde -i -f remainingCAobjects.ldf
      
  13. 如果确定已删除所有证书颁发机构,请删除证书模板。 重复步骤 12 以确定是否保留任何 AD 对象。

    重要

    除非删除了所有证书颁发机构,否则不得删除证书模板。 如果意外删除了模板,请执行以下步骤:

    1. 确保以企业管理员身份登录到运行证书服务的服务器。

    2. 在命令提示符下,键入以下命令,然后按 Enter:

      cd %windir%\system32
      
    3. 键入以下命令,然后按 Enter:

      regsvr32 /i:i /n /s certcli.dll
      

      此操作会在 Active Directory 中重新创建证书模板。

    若要删除证书模板,请执行以下步骤。

    1. Active Directory 站点和服务 MMC 管理单元的左窗格中,选择“证书模板”文件夹。
    2. 在右窗格中,选择证书模板,然后按 Ctrl+A 选择所有模板。 右键单击所选模板,选择“ 删除”,然后选择“ ”。

步骤 7 - 删除发布到 NtAuthCertificates 对象的证书

删除 CA 对象后,必须删除发布到该 NtAuthCertificates 对象的 CA 证书。 使用以下命令之一从存储区中删除 NTAuthCertificates 证书:

certutil -viewdelstore " ldap:///CN=NtAuthCertificates,CN=Public Key
Services,...,DC=ForestRoot,DC=com?cACertificate?base?objectclass=certificationAuthority"
certutil -viewdelstore " ldap:///CN=NtAuthCertificates,CN=Public Key
Services,...,DC=ForestRoot,DC=com?cACertificate?base?objectclass=pKIEnrollmentService"

注意

必须具有企业管理员权限才能执行此任务。

操作 -viewdelstore 对指定属性中的证书集调用证书选择 UI。 可以查看证书详细信息。 可以取消选择对话框以不进行任何更改。 如果选择某个证书,则会在 UI 关闭并完全执行命令时删除该证书。

使用以下命令查看 Active Directory 中 NtAuthCertificates 对象的完整 LDAP 路径:

certutil -viewdelstore -? | findstr "CN=NTAuth"

步骤 8 - 删除 CA 数据库

卸载认证服务后,CA 数据库保持不变,以便可以在另一台服务器上重新创建 CA。

若要删除 CA 数据库,请删除 %systemroot%\System32\Certlog 文件夹。

步骤 9 - 清理域控制器

卸载 CA 后,必须删除颁发给域控制器的证书。

若要删除颁发给 Windows Server 2000 域控制器的证书,请使用 Microsoft Windows 2000 资源工具包中的 Dsstore.exe 实用工具。

若要删除已颁发给 Windows Server 2000 域控制器的证书,请执行以下步骤:

  1. 依次选择“ 开始”、“ 运行”、“ cmd”,然后按 Enter。

  2. 在域控制器上,在命令提示符处键入 dsstore -dcmon ,然后按 Enter。

  3. 键入 3,然后按 Enter。 此操作将删除所有域控制器上的所有证书。

    注意

    Dsstore.exe 实用工具将尝试验证颁发给每个域控制器的域控制器证书。 未验证的证书将从其各自的域控制器中删除。

若要删除颁发给 Windows Server 2003 域控制器的证书,请执行以下步骤。

重要

如果使用基于版本 1 域控制器模板的证书,请不要使用此过程。

  1. 依次选择“ 开始”、“ 运行”、“ cmd”,然后按 Enter。

  2. 在域控制器上的命令提示符下,键入 certutil -dcinfo deleteBad

    Certutil.exe 尝试验证颁发给域控制器的所有 DC 证书。 删除未验证的证书。

若要强制应用安全策略,请执行以下步骤:

  1. 选择“开始”,选择“运行”,在“打开”框中键入 cmd,然后按 Enter。
  2. 在命令提示符下,键入相应版本的操作系统的相应命令,然后按 Enter:
    • 对于 Windows Server 2000:

      secedit /refreshpolicy machine_policy /enforce
      
    • 对于 Windows Server 2003:

      gpupdate /force