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

适用于: Windows Server

原始 KB 编号: 889250

总结

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

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

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

选择“开始”,指向“管理工具”,然后选择“证书颁发机构”。

展开 CA,然后选择“颁发的证书”文件夹。

在右窗格中,选择其中一个颁发的证书,然后按 Ctrl+A 选择所有颁发的证书。

右键单击所选证书,选择“ 所有任务”,然后选择“ 撤销证书”。

在“证书吊销”对话框中,选择“停止操作”作为吊销的原因,然后选择“确定”。

步骤 2 - 增加 CRL 发布间隔

在证书颁发机构Microsoft管理控制台(MMC)管理单元中,右键单击 “吊销的证书 ”文件夹,然后选择“ 属性”。

在 “CRL 发布间隔 ”框中,键入适当长的值,然后选择“ 确定”。

注意

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

步骤 3 - 发布新的 CRL

在证书颁发机构 MMC 管理单元中,右键单击“吊销的证书”文件夹。

选择“ 所有任务”,然后选择“ 发布”。

在 “发布 CRL ”对话框中,选择“ 新建 CRL”,然后选择“ 确定”。

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

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

在证书颁发机构 MMC 管理单元中,选择“挂起的请求”文件夹。

在右窗格中,选择其中一个挂起的请求,然后按 Ctrl+A 选择所有挂起的证书。

右键单击所选请求,选择“ 所有任务”,然后选择“ 拒绝请求”。

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

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

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

在命令提示符下,键入 certutil -getreg DBDirectory,然后按 Enter。 记下 输出中的 DBLogDirectory 值。 例如:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\DBDirectory:

DBDirectory REG_SZ = C:\Windows\system32\CertLog

CertUtil: -getreg command completed successfully.

在命令提示符下,键入 certutil -getreg DBLogDirectory,然后按 Enter。 记下 输出中的 DBLogDirectory 值。 例如:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\DBLogDirectory:

DBLogDirectory REG_SZ = C:\Windows\system32\CertLog

CertUtil: -getreg command completed successfully.

在命令提示符下,键入 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 -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

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

如果 CA CSP 值Microsoft强加密提供程序,或Microsoft增强型加密提供程序 v1.0,请键入以下命令,然后按 Enter。

certutil -delkey CertificateAuthorityName

如果 CA CSP 值 Microsoft软件密钥存储提供程序,请键入以下命令,然后按 Enter。

certutil -CSP KSP -delkey CertificateAuthorityName

如果 CA CSP 值是其他值,请键入以下命令,然后按 Enter。

certutil -CSP \ -delkey CertificateAuthorityName

注意

如果 CA 名称包含空格,请将名称用引号引起来。 如果 CA 有多个密钥,则需要针对每个密钥运行上述命令。

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

certutil -delkey "Windows2000 Enterprise Root CA"

再次列出密钥存储区,以验证 CA 的私钥是否已删除。

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

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

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

选择“开始”,指向“管理工具”,然后选择服务器管理器。

在“角色摘要”下,选择“删除角色”以启动“删除角色向导”,然后选择“下一步”。

选中以清除 “Active Directory 证书服务 ”复选框,然后选择“ 下一步”。

在“ 确认删除选项” 页上,查看信息,然后选择“ 删除”。

如果已配置并运行证书颁发机构 Web 注册角色,并在继续卸载过程之前提示卸载此角色,请选择“确定”,首先卸载此角色,然后重复上述步骤。

删除角色向导完成后,重启服务器。 这将完成卸载过程。

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

注意

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

选择“开始”,指向“管理工具”,然后选择服务器管理器。

在“角色摘要”下,选择“Active Directory 证书服务”。

在“角色服务”下,选择“删除角色服务”。

选中以清除“证书颁发机构”复选框,然后选择“下一步”。

在“ 确认删除选项” 页上,查看信息,然后选择“ 删除”。

如果 IIS 正在运行,并且系统会提示在继续卸载过程之前停止服务,请选择“ 确定”。

删除角色向导完成后,必须重启服务器。 这将完成卸载过程。

如果剩余的角色服务(如联机响应程序服务)配置为使用卸载的 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=公钥服务,CN=Services,CN=Configuration,DC=ForestRootDomain。

包含 CA 的 CA 证书。

已发布的颁发机构信息访问 (AIA) 位置。

crlDistributionPoint 对象

位于 CN=ServerName,CN=CDP,CN=公钥服务,CN=Services,CN=Configuration,DC=ForestRoot,DC=com。

包含 CA 定期发布的 CRL。

已发布的 CRL 分发点 (CDP) 位置。

certificationAuthority 对象

位于 CN=证书颁发机构,CN=公钥服务,CN=Services,CN=Configuration,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 中删除所有认证服务对象,请执行以下步骤:

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

选择“开始”,选择“运行”,在“打开”框中键入 cmd,然后选择“确定”。

键入“certutil” ,然后按 ENTER。

记下属于 CA 的名称值。 对于此过程的后续步骤,需要 CACommonName。

选择“开始”,指向“管理工具”,然后选择“Active Directory 站点和服务”。

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

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

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

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

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

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

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

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

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

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

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

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

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

ldifde -r "cn=CA1 Contoso" -d "cn=public key services,cn=services,cn=configuration,dc=contoso,dc=com" -f remainingCAobjects.ldf

在 记事本中打开 remainingCAobjects.ldf 文件。 将术语 changetype:add 替换为 changetype:delete。 然后,验证要删除的 Active Directory 对象是否合法。

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

ldifde -i -f remainingCAobjects.ldf

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

重要

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

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

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

cd %windir%\system32

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

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

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

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

在 Active Directory 站点和服务 MMC 管理单元的左窗格中,选择“证书模板”文件夹。

在右窗格中,选择证书模板,然后按 Ctrl+A 选择所有模板。 右键单击所选模板,选择“删除”,然后选择“是”。

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

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

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

certutil -viewdelstore "ldap:///CN=NtAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,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 数据库,请删除包含数据库和日志的 Certlog 文件夹。 这默认 存储在 %systemroot%\System32\Certlog 文件夹中。

可以从步骤 5 - 从服务器部分卸载证书服务,找到数据库和日志文件夹的位置。

步骤 9 - 清理域控制器

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

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

重要

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

选择“ 开始”,选择“ 运行”,键入 cmd,然后按 Enter。

在域控制器上的命令提示符处,键入 certutil -dcinfo deleteBad。

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

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

选择“开始”,选择“运行”,在“打开”框中键入 cmd,然后按 Enter。

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

gpupdate /force