本分步文章介绍如何解除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 <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
-
删除与 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 \<PROVIDER NAME\> -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