Microsoft Corporation
摘要
本文档为管理员提供了有关如何配置和使用 Windows 证书颁发机构的指南。同时还提供了各种操作方案、自定义配置信息、示例命令以及最佳方法。
| 简介 | |
| 基本管理任务 | |
| 从独立 CA 移植到企业 CA | |
| Windows Server 2003 PKI 和基于角色的管理 | |
| 角色分离 | |
| CA 审核 | |
| 设置 CA 审核 | |
| 审核和事件管理 | |
| CA 维护 | |
| 自定义 CA 配置 | |
| 注册处理 | |
| 性能调整 | |
| 查看扩展信息 | |
| 管理证书接受方中的接受方 RDN | |
| 启用 Netscape 吊销方法 | |
| 配置 SMTP 退出模块 | |
| 使用 SSL 与 Exchange Server 通讯 | |
| 相关链接 | |
| 附录 A |
Windows Server 2003 针对部署公钥基础结构提供了一种灵活且低 TCO 的解决方案。由于客户环境的复杂性以及组织要求的不同,Windows Server 2003 证书颁发机构 (CA) 可能需要更改配置。本白皮书针对某些较常用的方案提供了最佳操作方法以及配置过程,但是不可能涵盖 Windows Server 2003 CA 中所有可能的操作方案以及配置参数。
对于日复一日的任务,通常较好的做法是建立一个标准过程。过程通常依赖于组织,因为不同的组织会有不同的过程和人员。当执行常见的日复一日的管理任务时,大多数组织通常会采用常用的做法。
将证书模板添加到 CA 中
证书模板会根据使用证书的目的配置证书。当从 Microsoft 证书颁发机构 (CA) 请求证书时,证书请求者可根据其访问权限从各种基于证书模板的证书类型中进行选择,例如User 和 Basic EFS。使用证书模板之后,用户便无需再作出有关所需证书类型的低级技术决策。相反,他们可以依赖管理员的判断并使用表明证书用途的模板名称。如果预设的证书模板均不能满足您的需求,您可以创建新的证书模板并进行自定义以实现各种不同的用途。
注意:除了指定适当的权限以便在 Active Directory 中注册证书模板之外;如果您希望用户开始注册此模板,还需要将此模板添加到 CA 可以发行的证书模板的列表中。
注意:只有 Windows Server 2003 CA 和 Windows 2000 Enterprise CA 才能颁发基于证书模板的证书;独立 CA 无法使用证书模板。
注意:您必须是 Enterprise Admins 或 Domain Admins 的成员,否则您必须具有足够的权限才能向 Active Directory 中的 Certificate Templates 容器写入。
在证书模板上更改权限以便用户注册
1. | 在 Certification Authority 管理单元中,右键单击 Certificate Templates 节点,然后选择 Manage。 |
2. | 双击某个证书模板。 |
3. | 在 Security 选项卡上,针对 Read 和 Enroll 权限选中 Allow 框。 |
将证书模板添加到 CA 中
1. | 在 Certification Authority 管理单元中,右键单击 Certificate Templates 节点,然后在 New 子菜单上选择 Certificate Template to Issue。 |
2. | 选择适当的模板并单击 OK。 |
注意:您必须是 CA Administrator 才能将模板添加到 CA 中。
委托证书模板管理
虽然大多数与 CA 相关的任务可以通过管理 CA 本身来完成,但是某些任务却通过 Active Directory 进行控制,例如证书模板管理。
委托证书模板管理
1. | 在 Certification Authority 管理单元中,右键单击 Certificate Templates 节点,然后选择 Manage。 |
2. | 双击某个证书模板。 |
3. | 在 Security 选项卡上,针对 Read 和 Enroll 权限选中 Allow 框。 |
颁发证书
在颁发某一证书之前,您需要回答一些问题并进行存档。这些问题更多地与如何从操作端(而非技术端)颁发证书相关。
1. | 我的组织当前是否针对此 CA 使用证书实施细则 (CPS)?如果是,则请求者是否满足所有的注册要求? |
2. | 作为管理员,我必须满足哪些针对证书颁发人员(例如 Officer)的特殊要求? |
3. | 当颁发证书时,我必须遵循组织中的哪些书面操作过程(例如备份)? |
4. | 证书中必须包括哪些未在请求中包括的特殊属性(例如 Certificate Policy)? |
当回答完这些问题并且满足所有要求之后,作为具有 Certificate Manager (CA Officer) 权限的用户登录来颁发证书:
1. | 左键单击 Certification Authority 管理单元中的 Pending Requests 节点。 |
2. | 右键单击请求,然后在 All Tasks 子菜单上选择 Issue。 |
如果其中一个要求没有满足,您既可以确保满足这些要求(例如使用户提供更多的身份验证信息)然后颁发证书,也可以拒绝此请求。
拒绝请求
1. | 左键单击 Certification Authority 管理单元中的 Pending Requests 节点。 |
2. | 右键单击请求,然后在 All Tasks 子菜单上选择 Deny。 |
在任何一种情况下,请确保对您的操作以及四个问题的所有回答均已进行存档。
重要信息:策略模块始终会重新处理挂起的请求,并且如果在最初提交请求之后模板、配置或用户组信息已发生更改,则策略模块将会仅根据新的信息重新分析请求。
注意:要重新提交失败的请求并发出此请求,用户对于 CA 必须同时具有 CA Officer 和 CA Admin 权限。显然,如果在 CA 上启用角色分离时,此功能是不可能实现的。
吊销证书
虽然证书通常用于在组织中增强信任,但有时却需要从某一证书中删除信任。在您吊销证书之前,请确保您已回答以下问题并进行存档:
1. | 为何吊销此证书? |
2. | 何人请求吊销此证书? |
3. | 我是否还会再次需要此证书(例如验证签名或解密消息)?如果是,那么何时需要(即,验证签名、解密消息、一般使用)? |
4. | 作为管理员,我必须满足哪些针对吊销证书的人员(例如 Officer)的特殊要求? |
5. | 当吊销证书时,我必须遵循组织中的哪些书面操作过程(例如备份)? |
当回答完所有这些问题并且满足所有要求之后,便可吊销证书。
吊销证书
1. | 在 Certification Authority 管理单元中,左键单击 Issued Certificates 节点。 |
2. | 右键单击证书,然后在 All Tasks 子菜单上选择 Revoke Certificate。 |
3. | 选择适当的吊销原因并单击Yes。 |
请确保对您的操作以及五个问题的所有回答均已进行存档。
注意:如果您对于问题 3 的回答为是,并且在任何时候或一般使用时需要此证书,请确保选择 Certificate Hold 作为原因。这是可允许解除吊销已吊销证书的唯一原因。
如果您吊销某个证书且原因是 Certificate Hold,而后您又决定要解除吊销此证书,则需要回答以下问题并进行存档:
1. | 我为何要吊销此证书? |
2. | 何人请求此任务? |
3. | 作为管理员,我必须满足哪些针对解除吊销证书的人员(例如 Officer)的特殊要求? |
4. | 当吊销证书时,我必须遵循组织中的哪些书面操作过程(例如备份)? |
5. | 我的组织当前是否针对此 CA 使用证书实施细则 (CPS),如果是,则请求者是否满足解除吊销证书的所有要求? |
当回答完所有这些问题并且满足所有要求之后,便可解除吊销证书。
解除吊销证书
1. | 在 Certification Authority 管理单元中,左键单击 Revoked Certificates 节点。 |
2. | 右键单击已吊销的证书,然后在 All Tasks 子菜单上选择 Unrevoke Certificate。 |
请确保对您的操作以及四个问题的所有回答均已进行存档。
注意:如果误用,解除吊销证书被认为是很危险的。当您解除吊销证书时,请确保操作和文档均正确。
即使是最佳的规划意图,也可能需要将基于 Windows 的证书颁发机构的配置从独立模式更改为企业模式。还可能需要更改最初作为 NT 4.0 证书颁发机构(包括在 NT 4.0 Option Pack 中)安装的 CA 的配置。例如,可以将 NT 4.0 CA 适当升级到独立 CA 然后再转换为企业 CA 以便与 Exchange 2000 配合使用。对于 NT 4.0 升级过程,请参阅 Windows 2000 或 Windows Server 2003 中的帮助文件。本节提供了将 Windows Server 2003 独立 CA 转换为企业 CA 所需的全部步骤。
注意:不能将根 CA 转换为从属 CA,反之亦然。
移植 CA 的第一步是备份 CA 使用的现有密钥对及其数据库。要备份 CA 密钥和数据库,请在 MMC 中右键单击 CA 节点,然后在 All Tasks 下选择 Back up CA。
然后,您必须备份证书数据库、CA 证书以及 CA 私钥。选择 Private key and CA certificate 和 Certificate database and certificate database log,然后选择适当的备份文件路径。
注意:备份路径不应包含旧的备份文件。如果您要覆盖旧的备份文件,请使用命令行工具 Certutil.exe。
输入强密码。此密码用于保护 CA 私钥。
重要信息:请勿丢失此密码,否则您无法在新的 CA 上恢复密钥。
检查摘要,然后单击 Finish 完成备份。
现在,您已成功备份了 CA 密钥和数据库。然后,您应该通过卸载独立 CA 从服务器中将其删除。通过从 Windows 组件中删除 Certificate Services 来卸载 CA。
如果尚未将计算机加入到目录林内的域中,请加入。
最佳方法 建议的最佳方法是将 CA 作为目录林中根域的成员进行安装,以便对 PKI 服务进行集中管理和控制。有关其他最佳方法,请参阅 Windows Server 2003 Resource Kit。
通过将 Certificate Services 添加到 Windows 组件中来重新安装 CA。
选择 Enterprise root CA 作为 CA Type,然后选择自定义设置以生成密钥。
注意:您必须是 Enterprise Admin 才能安装企业 CA。
选择可访问旧 CA 密钥的 CSP,然后选择旧 CA 使用的相同密钥和证书。
注意:如果您的 CA 具有多个密钥,请选择旧 CA 使用的原始密钥。这可以通过附加到密钥的数字确定,其中没有数字可以表示最早的密钥。
选择 Preserve existing certificate database 以使用旧的数据库。这会启用新的企业 CA,以跟踪对旧独立 CA 的所有挂起的请求以及由此旧 CA 颁发或吊销的所有证书。
当提示停止 IIS 服务时,单击 Yes 完成 CA 的安装。
Windows Server 2003 CA 基于角色的管理在 Windows 2000 Server CA 管理的基础上进行了显著的更改。Windows 2000 Server 管理员可以在 Windows 2000 Server CA 上执行任何活动,但是一旦在 Windows Server 2003 CA 上指定 CA 角色,那么它的管理员便受限于它的角色。可以在 Windows 2000 Server CA 执行所有任务的管理员只能在 Windows Server 2003 CA 上执行与他们的角色关联的任务。将 Windows 2000 Server CA 升级到 Windows Server 2003 CA 之后,需要将它的管理员指定为在基于角色的 Windows Server 2003 CA 管理中定义的角色。
Windows Server 2003 的设计考虑了组织的需求,以便提供基于角色的公钥基础结构管理。Windows Server 2003 证书颁发机构还旨在符合在 1.0 版的 Certificate Issuing and Management Components Family of Protection Profiles(位于http://csrc.nist.gov/pki/documents/CIMC_PP_20011031.pdf)中定义的角色定义
基于角色的管理可用于将 CA Administrators 分为单独的、预定义的、基于任务的角色,每个角色都具有自己的一系列任务。使用每个用户的安全设置指定角色。通过为用户指定与角色关联的特定安全设置,将角色指定给用户。具有一种权限(例如 Manage CA 权限)的用户可以执行具有另一种权限(例如 Issue and Manage Certificates 权限)的用户所不能执行的特定 CA 任务。Windows Server 2003 企业和独立证书颁发机构都支持基于角色的管理。
基于角色的管理涉及 CA 角色用户和组。要将角色指定给用户或组,您必须将此角色的对应安全权限、组成员身份或用户权限指定给此用户或组。这些安全权限、组成员身份以及用户权限用于区分各用户具有的角色。下表描述了基于角色的管理的 CA 角色以及与基于角色的管理相关的组。
| 角色和组 | 安全权限 | 描述 |
CA Administrator | Manage CA 权限 | 配置和维护 CA。这是 CA 角色且具有指定所有其他 CA 角色以及续订 CA 证书的能力。此角色与本地 Administrator 角色不同。 |
Certificate Manager | Issue and Manage Certificates 权限 | 批准证书注册和吊销请求。这是 CA Officer 角色。 |
Backup Operator | Back up files and directories 和 Restore files and directories 权限 | 执行系统备份和恢复。这是操作系统角色。 |
Auditor | Manage auditing and security log 权限 | 配置、查看以及维护审核日志。这是操作系统角色。 |
Enrollees | Authenticated Users | 注册人是被授权从 CA 请求证书的客户端。这并不是用于管理的 CA 角色。 |
Read | 所有权限(Enrollees 除外) | 允许实体从数据库读取记录。 |
执行默认安装时,所有 CA 角色均由计算机上的本地 Administrators、Enterprise Admins 以及 Domain Admins(如果已加入到域中)指定和修改。在企业 CA 上,默认情况下本地 Administrators、Enterprise Admins 以及 Domain Admins 都是 CA Administrators。在独立 CA 上,默认情况下只有本地 Administrators 是 CA Administrators。如果将独立 CA 加入到 Active Directory 域中,则 Domain Admins 也是 CA Administrators。
在本地 Security Accounts Manager (SAM) 数据库中,可以将 CA Administrator 和 Certificate Manager 角色指定给 Active Directory 用户或本地用户。作为最佳方法,建议将角色指定给组帐户而非单个用户帐户。只有 CA Administrator、Certificate Manager(在 CIMC 中作为 Officer)、Auditor(在 CIMC 中作为 Auditor)以及 Backup Operator(在 CIMC 中作为 Operator)才是 CA 角色。下表中所述的其他用户与基于角色的管理相关,您应该先了解它们然后再指定 CA 角色。
使用 Certification Authority Microsoft 管理控制台 (MMC) 管理单元仅可指定 CA Administrators 和 Certificate Managers。要更改用户的角色,您必须更改此用户的安全权限、组成员身份或用户权限。
当在运行 Windows Server 2003 Enterprise Edition 的企业 CA 上配置密钥存档时,从 CA 获得证书的接受方会将其私钥提供给 CA。CA 会将此私钥存储在其数据库中,直到需要恢复密钥。只有 Certificate Manager 才能从 CA 数据库中获得加密的私钥 blob,此 blob 然后会传递给密钥恢复代理 (KRA)。有关更多信息,请参阅 Key Archival and Management in Windows Server 2003 白皮书。
角色和活动
每个 CA 角色都有与其关联的特定 CA 管理任务列表。下表列出了所有 CA 管理任务以及执行这些任务所使用的角色。最重要的区别之一便是本地 Administrator 与 CA Administrator 角色。本地 Administrator 适用于本地操作系统权限,执行某些与 CA 操作关联的任务可能需要此权限。CA Administrator 角色仅适用于 CA 功能中的特定任务。本地 Administrator 始终对包括 CA 在内的系统具有完全控制权限,无法取消其对 CA 的控制。因此,当出于管理目的将操作和委托角色指定给 CA 时,牢记这一点是非常重要的。
| 活动 | CA Administrator | Certificate Manager | Auditor | Backup Operator | 本地 Administrator | 注释 |
安装 CA |
|
|
|
| X |
|
配置策略并退出模块 | X |
|
|
|
|
|
停止和启动 Certificate Services 服务 | X |
|
| X(仅停止) |
|
|
配置扩展 | X |
|
|
|
|
|
配置角色 | X |
|
|
|
|
|
续订 CA 密钥和证书 |
|
|
|
| X |
|
定义密钥恢复代理 | X |
|
|
|
|
|
配置 Certificate Managers 限制 | X |
|
|
|
|
|
删除数据库中的单行 | X |
|
|
|
|
|
删除数据库中的多行(批量删除) |
|
|
|
| X |
|
启用角色分离 |
|
|
|
| X |
|
颁发和批准证书 |
| X |
|
|
|
|
拒绝证书 |
| X |
|
|
|
|
吊销证书 |
| X |
|
|
|
|
重新激活处于等待状态的证书 |
| X |
|
|
|
|
启用、发布或配置 CRL 周期 | X |
|
|
|
|
|
恢复存档的密钥 |
| X |
|
|
| 只有 Certificate Manager 才能从数据库中检索加密的密钥数据结构。解密密钥数据结构并生成 PKCS#12 文件会需要有效密钥恢复代理的私钥。 |
配置审核参数 |
|
| X |
|
| 默认情况下,本地 Administrator 具有系统审核权限。 |
审核日志 |
|
| X |
|
| 默认情况下,本地 Administrator 具有系统审核权限。 |
备份系统 |
|
|
| X |
| 默认情况下,本地 Administrator 具有系统备份权限。 |
恢复系统 |
|
|
| X |
| 默认情况下,本地 Administrator 具有系统恢复(备份)权限。 |
读取 CA 数据库 | X | X | X | X | X | 默认情况下,本地 Administrator 具有系统审核和备份权限。 |
读取 CA 配置信息 | X | X | X | X | X | 默认情况下,本地 Administrator 具有系统审核和备份权限。 |
注意:
默认情况下,注册人可以读取 CA 属性和证书请求列表 (CRL),并可请求证书。在企业 CA 上,用户还必须对证书模板具有 Read 和 Enroll 权限才能请求证书。CA Administrators、Certificate Managers、Auditor 以及 Backup Operators 对 CA 具有隐式读取权限。Auditor 基于具有系统审核权限的用户。默认情况下,每台计算机上的本地 Administrator 始终具有系统审核权限。如果启用了角色分离,则必须配置单独的用户使其具有系统审核权限。>Backup Operator 基于具有系统备份权限的用户。此外,Backup Operator 还具有停止 Certificate Services 服务(但不启动此服务)的功能。可以配置和使用任何数量的角色。如果只将一个特定角色指定给安全组,则不必定义所有的角色。执行批量删除需要同时具有 CA Administrator 和 CA Manager 角色,因此,同时具有这两种角色的任何人员均能够执行批量删除。如果启用了角色分离,则此功能不可用。要发出失败的请求,则需要同时具有 CA Administrator 和 CA Manager 的权限。如果启用了角色分离,则此功能不可用。
分配角色
通过为每个用户提供角色所需的安全设置,CA 的 CA Administrator 为用户指定基于角色的管理的单独角色。CA Administrator 可以将一个用户指定给多个角色,但是当每个用户只属于一个角色时,CA 会更加安全。当每个 CA 角色只属于一个用户时,如果用户帐户受到损坏,则可能会危及的 CA 任务会更少。
独立 CA 的默认安装设置是将本地 Administrators 安全组的成员作为 CA Administrators。企业 CA 的默认安装设置是将本地 Administrators、Enterprise Administrators 以及 Domain Administrators 作为 CA Administrators。要限制这些帐户中任何一个的功能,则一旦指定了所有 CA 角色,应该将这些帐户从 CA Administrator 以及 Certificate Manager 角色中删除;如果 CA 计算机不是域控制器,还应该将这些帐户从 CA 计算机上的 Administrator 组中删除。要在给定 CA 上列出当前用户所具有的角色,请参阅附录 A 中的示例脚本。
最佳方法 作为最佳方法,已被指定有 CA Administrator 或 Certificate Manager 角色的组帐户不应是本地 Admin 安全组的成员。此外,应该将 CA 角色仅指定给组帐户而非单个用户帐户。
注意:续订 CA 证书会需要 CA 上本地 Administrators 组中的成员身份。在 CA 上,此组的成员均被认为具有强大的功能,对所有其他 CA 角色具有管理权限。
使用角色分离 可以强制 CA 角色的分离。一旦强制,角色分离仅允许为一个用户指定单个角色。如果一个用户被指定有多个角色并尝试对 CA 执行操作,则此操作便会被拒绝。鉴于此,在启用角色分离之前,应该为一个用户仅指定一个 CA 角色。此功能对于大型企业而言十分重要,因为角色分离可以确保某用户帐户的损坏不会危及由此用户管理的整个 CA。
重要信息: 启用角色分离之前,在 CA 上被指定有 CA 角色的每个用户必须仅被指定有此 CA 上的单个 CA 角色。如果为一个用户指定多个 CA 角色,则当启用角色分离时,Certificate Services 服务会检测到用户具有多个角色并拒绝此用户尝试操作 CA。
在 CA 上,只有本地 Administrators 安全组的成员才能启用和禁用角色分离。启用角色分离需要编辑运行 Certificate Services 服务的 Windows Server 2003 Enterprise Edition 的注册表。一旦编辑此注册表设置以启用角色分离,则所有指定的角色便会有效,直到服务器的本地 Administrator 通过注册表禁用角色分离。当启用或禁用角色分离时,CA 角色可以由 CA Administrator 指定和更改。当启用角色分离时,CA Administrator 无法将一个用户指定给多个 CA 角色。如果 CA Administrator 尝试将一个用户指定给第二个 CA 角色,则此操作便会被拒绝。
警告:当启用角色分离时,如果还为用户指定了第二个 CA 角色,则指定有角色的用户可能会无法管理 CA。如果为 CA Administrator 指定第二个角色,或者为另一个角色所有者指定第二个角色,则 CA Administrator 因允许用户具有两个角色而违反了角色分离的规则。一旦将用户指定给两个角色,则角色分离将不会允许此用户对 CA 执行任何活动,其中包括如果是 CA Administrator,将他自己从其中一个角色中删除的活动。
要更正此配置,服务器的本地 Administrator 必须禁用角色分离,从第二个角色中删除 CA Administrator,然后重新启动 Certificate Services 服务。执行这些步骤后可以再次启用角色分离。
Windows 2000 和 Windows Server 2003 基于角色的管理
从 Windows 2000 CA 升级到 Windows Server 2003 CA 过程中,会根据下表中的规则将 Windows 2000 CA 权限升级为 Windows Server 2003 CA 角色。
| Windows 2000 权限 | Windows Server 2003 角色或权限 |
Manage CA 权限 | CA Administrator 和 Certificate Manager |
Revoke Certificate 权限 | Certificate Manager |
Approve/Issue Certificate 权限 | Certificate Manager |
Enroll permission | Enroll permission |
Read permission | Read permission |
Windows 2000 CA 高级安全设置中列出的所有其他权限 | Read permission |
注意: 您可以在运行 Windows Server 2003 系列任一版本的服务器上指定证书颁发机构角色以进行基于角色的管理,但是您仅可在运行 Windows Server 2003 Enterprise Edition 和 Windows Server 2003 Datacenter(包括 64 位版的 Windows Server 2003 Enterprise Edition 和 64 位版的 Windows Server 2003 Datacenter)的服务器上 启用 角色分离。
要启用角色分离,请打开命令提示窗口并键入
certutil -setreg ca\RoleSeparationEnabled 1
现在,必须停止然后再启动 Certificate Services 服务。
要停止然后再启动 Certificate Services 服务,请在命令提示符下键入
net stop certsvc net start certsvc
要禁用角色分离,请打开命令提示窗口并键入
certutil -delreg ca\RoleSeparationEnabled
再次,必须停止然后再启动 Certificate Services 服务。
要显示角色分离设置,请在命令提示符下键入
certutil -getreg ca\RoleSeparationEnabled
以下命令将显示包括 CA 角色分离状态在内的所有 CA 信息:
Certutil.exe -cainfo
角色分离验证
一旦将 CA 配置到角色分离模式中,则所有角色操作均通过 ICertAdminD DCOM 接口执行。当进行角色指定时,可能不会启用或强制角色分离。仅当人员(管理员、操作员等)执行操作时,才强制角色分离验证。角色分离强制规则作为二进制 blob 而存储在注册表中并由 CA 读取。每个角色被定义为一位(允许/拒绝)。有关此接口的更多信息,请参阅 MSDN 中的 Platform SDK。
Certificate Managers
系统支持 Certificate Managers 的功能,以防止 CA Officer 向每个人颁发证书。这可以通过授权回调来执行,并以虚拟安全说明符的形式存储在 CA 的注册表中。使用 Officer 角色执行第二次访问检查以验证他们管理(批准和吊销证书)哪些用户和组。每个 Certificate Manage 的 GUI 都具有 Officer 可以进行批准、吊销等操作的用户和组的列表。
如果 Officer 尝试批准尚未授权此 Officer 管理的用户的请求,将会出现访问被拒绝错误。这不会拒绝此请求或从待定批准队列中将其删除。此外,在发出证书请求之后,可以将新的用户或组添加到 Certificate Managers 授权列表中。
角色分离下的备份/恢复和审核
当您启用角色分离时,本地 Administrators 组的成员(包括本地 Administrator 帐户)将无法备份或恢复 CA,也无法启用 CA 审核。由于 Administrators 具有备份和恢复 CA 以及启用 CA 审核的权限,因此 CA 不允许他们执行任何任务,因为他们已被指定有多个角色。
要将备份权限指定给其他用户,请将此用户添加到本地 Backup Operators 组,或者在 Local Security Policy 管理单元中的 User Rights Assignment 下,为此用户指定 Backup files and directories 权限。要将恢复权限指定给其他用户,请将此用户添加到本地 Backup Operators 组,或者在 Local Security Policy 管理单元中的 User Rights Assignment 下,为此用户指定 Restore files and directories 权限。要赋予启用审核所需的权限,请在 Local Security Policy 管理单元中的 User Rights Assignment 下,为用户指定 Manage auditing and security log。
注意: 您可能需要通过在命令提示符下键入 gpupdate.exe 来刷新本地安全策略。要打开 Local Security Policy,请在命令提示符下键入 secpol.msc。
Windows Server 2003 Enterprise Edition 支持审核证书颁发机构 (CA) 操作。审核事件将被记录在安全日志中,并可使用事件查看器实用工具进行查看。CA 审核依赖于系统对象访问审核,因此对于系统管理员而言,必须先在目标系统上启用对象访问审核。
通过在 Certificate Authority MMC 管理单元中选择要审核的 CA 操作组来启用 CA 审核。以下各节描述了可以进行审核的每个 CA 操作组。
可将以下事件组配置为可被审核:
| • | 备份和恢复 CA 数据库 |
| • | 更改 CA 配置 |
| • | 更改 CA 安全设置 |
| • | 发出和管理证书请求 |
| • | 吊销证书和发布 CRL |
| • | 存储和检索存档的密钥 |
| • | 启动和停止 Certificate Services |
通过启用对此组的审核,可将备份 CA 数据库的成功或失败尝试记录到系统安全日志中。此外,重新启动时 CA 服务会检测到 CA 数据库已经恢复。恢复事件会被记录到系统安全日志中。
通过启用对此组的审核,可将更改 CA 配置的成功或失败尝试记录到系统安全日志中。这包括以下操作:
| • | 向 CA 添加模板或从中删除模板 |
| • | 配置 CRL 发布周期 |
| • | 修改策略模块的请求部署 |
| • | 修改退出模块的发布证书标志 |
| • | 配置 CRL 分发点 (CDP) |
| • | 配置颁发机构信息访问 (AIA) |
| • | 更改策略模块 |
| • | 更改退出模块 |
| • | 配置密钥存档和恢复 (KAR) |
通过启用对此组的审核,可将更改 CA 安全设置的成功或失败尝试记录到系统安全日志中。这包括以下操作:
| • | 配置 CA 角色以进行基于角色的 CA 管理 |
| • | 配置 Certificate Managers 的限制 |
| • | 配置 CA 审核 |
通过启用对此组的审核,可将发出和管理证书请求的成功或失败尝试记录到系统安全日志中。这包括以下操作:
| • | 传入证书请求 |
| • | 颁发证书 |
| • | 导入证书 |
| • | 删除 CA 数据库中的行 |
通过启用对此组的审核,可将吊销证书和发布 CRL 的成功或失败尝试记录到系统安全日志中。这包括以下操作:
| • | 吊销证书 |
| • | 发布 CRL |
通过启用对此组的审核,可将存储和检索存档密钥的成功或失败尝试记录到系统安全日志中。这包括以下操作:
| • | 存档接受方密钥 |
| • | 检索接受方密钥 |
通过启用对此组的审核,可将启动和停止 Certificate Services 的成功或失败尝试记录到系统安全日志中。这包括以下操作:
| • | 启动 Certificate Services |
| • | 停止 Certificate Services |
CA 审核依赖于要启用的系统对象访问审核。因此,要针对系统设置 CA 审核,系统管理员必须
1. | 启用系统的对象访问审核。 |
2. | 通过在 Certificate Authority MMC 管理单元中选择要审核的事件组来启用 CA 审核。 |
以下各节详细描述了这些步骤。
当 CA 位于域控制器上时
当 CA 位于域控制器 (DC) 上时启用对象访问审核
1. | 选择 Start > Programs > Administrative Tools > Domain Controller Security Policy。 |
2. | 展开 Default Domain Controllers Security。 |
3. | 展开 Computer Configuration。 |
4. | 展开 Windows Settings。 |
5. | 展开 Security Settings。 |
6. | 展开 Local Policies。 |
7. | 选择 Audit Policy。 |
8. | 右键单击 Audit object access 并选择 Properties。 |
9. | 选中 Define these policy settings。 |
10. | 在 Audit these attempts 下选中 Success 和 Failure。 |
11. | 单击 OK。 |
当 CA 位于成员或工作组服务器上时
当 CA 位于成员或工作组服务器上时启用对象访问审核
1. | 选择 Start > Programs > Administrative Tools > Local Security Policy。 |
2. | 展开 Local Policies。 |
3. | 选择 Audit Policy。 |
4. | 右键单击 Audit object access 并选择 Properties。 |
5. | 在 Audit these attempts 下选中 Success 和 Failure。 |
6. | 单击 OK。 |
启用 CA 审核
1. | 打开 Certificate Authority MMC 管理单元。 |
2. | 右键单击 CA 并选择 Properties。 |
3. | 单击 Audit 选项卡。 |
4. | 选中要审核的 CA 操作组。 |
5. | 单击 OK。 |
以下事件 ID 当前由 Certificate Services 使用:
772. Certificate Manager 拒绝挂起的证书请求。
773. Certificate Services 收到重新提交的证书请求。
774. Certificate Services 吊销证书。
775. Certificate Services 收到要发布证书吊销列表 (CRL) 的请求。
776. Certificate Services 发布证书吊销列表 (CRL)。
777. 更改证书请求扩展。
778. 更改一个或多个证书请求属性。
779. Certificate Services 收到要关闭的请求。
780. 启动 Certificate Services 备份。
781. 完成 Certificate Services 备份。
782. 启动 Certificate Services 恢复。
783. 完成 Certificate Services 恢复。
784. 启动 Certificate Services。
785. 停止 Certificate Services。
786. 更改 Certificate Services 的安全权限。
787. Certificate Services 检索存档的密钥。
788. Certificate Services 将证书导入其数据库。
789. 更改 Certificate Services 的审核筛选器。
790. Certificate Services 收到证书请求。
791. Certificate Services 批准证书请求并颁发证书。
792. Certificate Services 拒绝证书请求。
793. Certificate Services 将证书请求的状态设为挂起。
794. 更改 Certificate Services 的 Certificate Manager 设置。
795. 更改 Certificate Services 中的配置项。
796. 更改 Certificate Services 的属性。
797. Certificate Services 存档密钥。
798. Certificate Services 导入并存档密钥。
799. Certificate Services 将 CA 证书发行到 Active Directory。
800. 从证书数据库中删除一行或多行。
801. 启用角色分离。
共享事件 ID 的细目分类
796:
属性: 29
索引: 0
类型: 4
向 CA 添加模板或从其中删除模板。值是按照名称和 OID 列出的
结果模板的列表。
属性: 26
索引:<KRA 证书索引>
类型: 3
向 CA 添加 KRA 证书。值是证书的
Base64 表示形式。
属性: 25
索引: 0
类型: 1
从 CA 中删除 KRA 证书。值是 KRA 证书的总计数。例如,您可以向 CA 添加 7 个证书,但配置 CA 以仅使用 3 个证书。在此例中,属性 25 (CR_PROP_KRACERTCOUNT) 为 7 而属性 24 (CR_PROP_KRACERTUSEDCOUNT) 为 3。
属性: 24
索引: 0
类型: 1
添加/删除 KRA 证书的数量以用于密钥存档。值是要使用的证书的结果数量。值 0 表示已禁用 KAR。例如,您可以向 CA 添加 7 个证书,但配置 CA 以仅使用 3 个证书。在此例中,属性 25 (CR_PROP_KRACERTCOUNT) 为 7 而属性 24 (CR_PROP_KRACERTUSEDCOUNT) 为 3。
795:
节点:
项:CRLPeriod 或 CRLPeriodUnits 或 CRLDeltaPeriod 或
CRLDeltaPeriodUnits
描述了 CRL 发布周期中的更改。CRLDeltaPeriodUnits 的值 0
表示已禁用增量 CRL 发布。
节点:PolicyModules\CertificateAuthority_MicrosoftDefault.Policy
项:RequestDisposition
值: 1
设置 CA 以发出传入请求,除非指定其他方式。
节点:PolicyModules\CertificateAuthority_MicrosoftDefault.Policy
项:RequestDisposition
值: 257
设置 CA 以保持传入请求为挂起状态。
节点:ExitModules\CertificateAuthority_MicrosoftDefault.Exit
项:PublishCertFlags
值: 1
允许将证书发行到文件系统。
节点:ExitModules\CertificateAuthority_MicrosoftDefault.Exit
项:PublishCertFlags
值: 0
不允许将证书发行到文件系统。
节点:ExitModules
项:Active
活动退出模块中的更改。值指定了新模块的名称。空白
表示无。
节点:PolicyModules
项:Active
活动策略模块中的更改。值指定了新模块的名称。
节点:
项:CRLPublicationURLs
CDP 或 AIA 中的更改。值指定了 CDP 的结果集。
节点:
项:CACertPublicationURLs
AIA 或 CDP 中的更改。值指定了 AIA 的结果集。
以下各表提供了有关 CA 审核事件中所包含数据的更多信息。
证书请求事件
| 审核事件 | 审核数据 |
提交证书请求 | 请求 ID 请求者的 UPN |
处理证书请求 | 请求 ID 接受方的 DN 处理结果(发出、挂起或拒绝) |
颁发证书 | 请求 ID 证书序列号 证书的哈希值 证书模板和版本 CSP 的序列号 |
发行证书 | 请求 ID 已更新对象的 DN DC 名称 证书序列号 |
吊销证书 | 证书序列号 吊销时间 吊销原因 |
存档密钥 | 请求 ID 请求者的 UPN 恢复代理证书哈希值的列表 |
证书管理审核事件
| 审核事件 | 审核数据 |
请求证书吊销 | 颁发者名称和签名证书的序列号(如果已签名) 吊销原因 Certificate Manager 的 UPN |
重新提交请求 | 请求 ID Certificate Manager 的 UPN |
拒绝请求 | 请求 ID Certificate Manager 的 UPN |
导入证书 | 请求 ID Certificate Manager 的 UPN |
检索存档的密钥 | 请求 ID 证书序列号 加密 Blob 的哈希值 Certificate Manager 的 UPN |
CA 管理审核事件
| 审核事件 | 审核数据 |
启动或停止服务 | 证书服务器数据库目录的哈希值 数据库日志目录的哈希值 所有证书服务器证书哈希值的列表 CSP 的序列号 |
请求 CA 证书续订 | 请求者的 URN SKI |
安装 CA 证书 | 安装程序的 UPN 证书的哈希值 颁发者名称 AKI SKI |
创建和发布 CRL | CRL 类型 AKI CRL 的哈希值 基本和/或增量 CRL 此次更新的 CRL 下次更新的 CRL 用于发布的 URL SKI(CA 的标识符) 服务管理器的 UPN |
配置 CRL 发布策略 | 所有 CRL 策略项的列表 服务管理器的 UPN |
选择策略模块 | 活动策略模块的名称(相对注册表路径) 服务管理器的 UPN |
选择退出模块 | 活动退出模块的名称(相对注册表路径) 服务管理器的 UPN |
配置策略模块 | 策略模块的名称 配置项名称 新的配置项值 服务管理器的 UPN |
配置退出模块 | 退出模块的名称 配置项名称 新的配置项值 服务管理器的 UPN |
更新证书模板 | 模板名称 模板主版本和次版本号 模板属性的列表 服务管理器的 UPN |
更改密钥存档策略 | 密钥恢复代理证书的接受方名称 密钥恢复代理证书的哈希值 所使用的密钥恢复代理证书的数量 服务管理器的 UPN |
删除数据库行 | 表格 行 服务管理器的 UPN |
配置 Certificate Managers 限制 | 启用/禁用限制 每个 Certificate Manager 的 UPN、要管理的用户的列表、ACE 类型(允许/拒绝) 服务管理器的 UPN |
配置 CA 安全性 | 每个用户的 UPN、控制访问类型、ACE 类型(允许/拒绝) 服务管理器的 UPN |
配置 CDP | 所有 CDP 的列表 服务管理器的 UPN |
配置 AIA | 所有 AIA 的列表 服务管理器的 UPN |
备份/恢复事件
启动服务备份 | Operator 的 UPN 备份类型 备份集 ID 数据完整性检查开\关 |
完成服务备份 |
|
取消服务备份 |
|
启动服务恢复 | Operator 的 UPN 恢复类型 备份集 ID 数据完整性检查开\关 |
完成服务恢复 | 完整性检查完好(如果完整性检查打开) |
取消服务恢复 | Operator 的 UPN |
审核事件
更改审核筛选器 | 新审核筛选器的值 Auditor 的 UPN |
同管理和操作与公钥基础结构关联的任务相比,建立 PKI 只是一个很小的步骤。
可以在本地或通过远程连接对连接到网络上的 CA 进行维护;但是,CA 维护和管理工具的设计主要针对本地操作。这是因为 CA 管理是一项敏感性操作并应尽量保持安全性。
如果 Certificate Services MMC 管理单元能够用于远程管理,请参阅 Users Allowed to Manage the CA Cannot Access It Remotely [271470] 以采取适当的步骤来远程访问 CA。
即使在技术方面可能实现,也不应通过终端服务器会话对 CA 进行维护,因为它会增大攻击范围,而且如果在终端服务器会话中使用某些管理工具(例如 certutil.exe),这些工具也无法正常工作。
注意:Windows 2000 CA 可能无法使用 Windows Server 2003 版的 Certification Authority MMC 管理单元来管理,反之亦然。
发布脱机 CA 的 CRL
应该在先前颁发的 CRL 实际到期日的前几天执行实际的脱机 CRL 发布。应该执行此操作来提高安全性以免脱机根 CA 出现硬件或发布故障。应该分配足够的时间以确保可更正所有错误或修复所有故障,并可向所有 CDP 位置实际发布和复制 CRL。
一旦 CA 上的 CDP 扩展已更新,则应发布新的 CRL,以便下载 CRL 的所有客户端都具有最新的下载信息(例如增量 CRL URL)。
在脱机 CA 上手动发布 CRL
1. | 选择 Certification Authority MMC 管理单元的 Revoked Certificates 节点。 | ||
2. | 右键单击,选择 All Tasks,然后单击 Publish。 将会发布新的基本和增量(如果已配置) CRL。 将会显示提示,要求确认应该使用此请求发布何种类型的 CRL。由于从脱机根 CA 中仅可发布基本 CRL,因此只有 New CRL 选项可用。 | ||
3. | 单击 OK。 | ||
4. | 如果作为 Enterprise Admin 组之成员的帐户或作为目录林中根(第一个)域的域管理员登录,则可以从命令行使用 Windows Server 2003 版的 certutil.exe -dspublish 命令将根 CA 证书手动发行到 Active Directory。 Windows 2000 中的等效命令为 dsstore.exe。有关将 CA 证书手动发行到 Active Directory 的更多信息,请参阅以下知识库文章:
|
CRL 重新签名
在某些情况下,可能无法从脱机 CA 中发布 CRL。在这种情况下,可以在 Windows Server 2003 中重新签名旧的 CRL,而无需使用证书颁发机构。此过程假设可以在 CA 之外使用 CA 私钥以实际签名 CRL。要更新过期的 CRL,必须先检索旧的 CRL 文件。可以在以下情况下在 Active Directory 中执行此操作:如果 CA 为企业 CA,或者如果 Active Directory 在安装 CA 后具有可访问性或位于 CA 计算机本身的 %windir%\System32\CertSrv\CertEnroll 目录中。
重新签名 CRL 的简单语法为
certutil -sign <existing CRL file name> <resigned CRL file name>
您还可以使用 certutil.exe -sign 命令添加或删除序列号、删除扩展或者更改 CRL 保持有效的时间长度。
默认为重新签名 CRL 使其从签名之前 10 分钟开始有效(允许时差),并且生存时间 (NextUpdate) 与旧 CRL 的生存时间相同。使用以下命令将 CRL 发布到 Active Directory。此 Certutil 命令会描述 Active Directory 中的对象是否已更新或者已是最新。
certutil -dspublish <resigned CRL file name>
通过将 CRL 文件手动复制到 file://、ftp:// 或 http:// 位置,便可以将 CRL 文件发布到上述位置。在 CA 计算机上执行以下命令应该显示 CA 预期激活的下一次时间并发布下一个 CR:
certutil -getreg ca\CRLNextPublish
使用此 certutil 命令转储 CRL 将会显示 1.3.6.1.4.1.311.21.4 (Next CRL Publish) 扩展,这应该等效于 CRLNextPublish 注册表值(但是两种显示内容的语法不同)。Certutil -sign 无法使此扩展重新签名 CRL,因为会将下一个颁发日期误解为最多在重新签名之后。使用此 certutil 命令转储由 CA 颁发的证书将会显示存储 CRL 的 ldap:///、http:// 以及 file:// URL 位置。
脱机 CRL 发布的管理过程
以下为示例过程概述,可遵循它来发布脱机 CA CRL:
在当前 CRL 要到期的前几天,将脱机根 CA 系统从其受保护的位置(通常位于安全储藏室中,例如双重锁定的壁橱、密码保险箱或者其他物理上受到良好保护的位置)移开;通常有两名或多名员工在场(例如一名 IT 管理员以及一名管理人员)。
启动根 CA 计算机,然后使用具有适当权限的帐户登录。
启动 Certificate Authority MMC 小程序并将 CA CRL 发布到本地驱动器。
将 CRL 复制到磁盘或其他可移动媒体中。
退出并关闭脱机根 CA 服务器,然后将其放入安全储藏室中。
可移动媒体用于发布或者运输服务器,并且根据在 CA 未到期的证书中发布的当前 CDP 位置,将 CRL 复制到适当的位置。重要信息:对于管理员而言,对脱机 CA 执行常规(测试)恢复以查看是否按预期执行备份/恢复过程是极其重要的。在操作公钥基础结构时,故障恢复过程和测试是极为重要的。
续订 CA 的最佳方法
续订或替换证书颁发机构的原因有很多。以下是续订 CA 的最常见原因:
| • | 增加 CA 的生存时间 |
| • | 更改 CA 所使用的密钥 |
| • | 增加 CA 的密钥大小 |
| • | 向 CA 添加证书策略(合格的部属) |
| • | CRL 分区 |
当续订 CA 时,可通过使用 capolicy.inf 文件执行前三个原因。如果要续订根 CA,必须将根 CA 证书重新分发到信任此根 CA 的所有客户端,了解这一点非常重要。否则,现有客户端仅知道现有根 CA 证书,而且没有用于发现续订事件的机制。
当续订 CA 时,将要更新或更改各种对象和属性。如果 CA 为企业根或从属 CA,则将会在 Active Directory 中更新以下对象:
将已更新 CA 证书 (cACertificate) 和交叉证书(如果使用新的密钥对执行续订,则为 CrossCertificatePair)发行到 AIA 容器。
针对 CA 已使用的每个密钥对,发布新的 CRL。
将新的证书发行到 NTAUTH 对象。
在注册服务容器中,新的证书将替换现有证书。
注意:如果先前已将注册服务容器删除,则续订时会替换此容器,同时也会重新安装默认模板(如果它们已被删除)。
CRL 分区
CRL 分区是管理员经常续订颁发的 CA 的另一个主要原因。当使用新的密钥续订 CA 时,便会针对此 CA 生成新的密钥和证书。当生成新的密钥和证书后,如果要生成吊销信息,CA 将会使用新的密钥以及对应于先前证书的所有未到期的先前密钥。因此,CA 同时可以使用多个密钥,并会根据这些密钥发布多个 CRL。在 Certification Authority MMC 管理单元中,通过选择 CA 属性可以看到这一现象。
还可以通过检查 CA 证书本身来确定 CA 的续订状态。CA 版本扩展会标识续订 CA 的次数以及使用新密钥的次数。在此例中,CA 已续订三次,而且每种情况使用一个新密钥,因此版本号 3.3 如以下屏幕中所示。
一旦使用新密钥续订 CA,则仅使用新的密钥签名新证书。对于使用先前密钥签名的证书,仍可继续使用未到期的先前密钥来签名 CRL。因此,CA 可以同时发布多个 CRL,每个 CRL 均使用不同的密钥。这种 CA 续订方法可能是使用 Microsoft CA 控制 CRL 大小以及进行有效 CRL 分区的理想方法。
自动根CA 交叉证书生成
Windows Server 2003 已引入具有访问 Active Directory 权限之 Microsoft 根证书颁发机构的功能,可以针对已续订的根 CA 自动颁发和发行交叉证书。例如,当使用新的密钥续订 Windows Server 2003 根 CA 时,根会将续订的根 CA 证书作为旧的根 CA 证书的合格部属进行交叉验证。有关合格的部属的更多信息,请参阅 Planning and Implementing Qualified Subordination for Using Windows Server 2003 Enterprise Server 白皮书。
对于具有受到其他组织、网桥 CA 信任或者由其他组织交叉验证的现有根 CA 的用户而言,此功能尤其重要。要配置或禁用此功能,可以在根 CA 上执行以下各命令。
| • | 要强制根 CA 使用 CrossCA 证书模板,应该运行以下命令。否则,如果没有此标志,CA 决不会使用 CrossCA 证书模板(即使此模板可用),并会回退到使用预定义扩展而不使用模板生成证书: certutil -setreg ca\CRLFlags +CRLF_USE_CROSS_CERT_TEMPLATE |
| • | 要禁用自动 CrossCA 证书生成,请运行以下命令: certutil -setreg ca\CRLFlags +CRLF_DISABLE_ROOT_CROSS_CERTS |
| • | 要再次启用自动 CrossCA 证书生成,请运行以下命令: certutil -setreg ca\CRLFlags -CRLF_DISABLE_ROOT_CROSS_CERTS |
| • | 要强制根 CA 在按需生成 CA 加密证书时使用 CAExchange 证书模板,请运行以下命令。如果没有此标志,CA 将使用 CAExchange 证书模板(当其可用时)并回退到使用预定义扩展而不使用模板生成证书。 certutil -setreg ca\CRLFlags +CRLF_USE_XCHG_CERT_TEMPLATE |
密钥备份
如果您要使用智能卡或其他硬件锁而计算机出现故障,则需要将智能卡或键设备移至其他计算机,安装 CA 证书,而且可能向 CA 证书添加 KeyProvInfo 属性,这样私钥的 CSP 以及容器名称等才可用。这可以使用 certutil.exe -repairstore 命令来完成(参阅下文)。通常,将智能卡插入到读取器后便可自动执行此操作。
如果您要使用基于软件的 CSP 而计算机出现故障,则必须在硬件出现故障之前使用 certutil -backupkey 命令将 CA 密钥和证书保存在 PFX 文件 (PKCS #12) 中并使用密码加密,然后对第二台计算机使用 certutil -restorekey。
要添加 KeyProvInfo 属性,请使用以下命令。如果证书已导入 HKEY_CURRENT_USER 个人存储区,请包括 -user 选项。
certutil -repairstore my CACertSHA-1Hash
或者
certutil -repairstore -user my CACertSHA-1Hash
如有必要,请使用 certutil.exe -dump <file name> 转储证书以显示 SHA-1 证书哈希值。
最佳方法 需要备份证书颁发机构数据库、CA 证书以及 CA 密钥以免丢失重要的数据。应该根据同一间隔内颁发的证书数量,定期(每天、每周、每月)备份 CA。颁发的证书越多,就应该越频繁地备份 CA。
有关其他信息,请参阅 Windows Server 2003 中的帮助文件、Windows Server 2003 Resource Kit 或者 Microsoft 知识库:
Certificate Server Does Not Create Backups of Installed Keys [216922] (本文仅适用于 Windows 2000。)
从任何公钥基础结构或 Active Directory 环境中删除 CA 可能会对应用程序和服务具有显著的影响。因此,始终建议在删除 CA 之前要认真规划。如果以后需要恢复,请始终执行完整备份并将此备份保留一段时间。
卸载企业证书颁发机构
要解除授权根证书颁发机构,应该吊销由此 CA 颁发的所有未完成的证书。吊销之后,应该发布证书吊销列表 (CRL)。
1. | 吊销所有已颁发的证书。
| ||||||||||||
2. | 增大 CRL 发布间隔。
| ||||||||||||
3. | 发布新的 CRL。
| ||||||||||||
4. | 停止 Certificate Services。
| ||||||||||||
5. | 列出本地计算机的所有密钥存储区。
这会显示所有安装的加密服务提供程序 (CSP) 的名称以及与每个提供程序关联的密钥存储区。在列出的密钥存储区中,您会看到已列出数次的 CA 的名称。以下为示例输出。
Microsoft Strong Cryptographic Provider:
Enterprise Root CA
AT_SIGNATURE
Enterprise Root CA(11)
AT_SIGNATURE
Enterprise Root CA(13)
AT_SIGNATURE
Enterprise Root CA(4)
AT_SIGNATURE
Enterprise Root CA(14)
AT_SIGNATURE
Enterprise Root CA(9)
AT_SIGNATURE
Enterprise Root CA(7)
AT_SIGNATURE
Enterprise Root CA(6)
AT_SIGNATURE
MS IIS DCOM Server
AT_SIGNATURE, AT_KEYEXCHANGE
Enterprise Root CA(2)
AT_SIGNATURE
Enterprise Root CA(12)
AT_SIGNATURE
Enterprise Root CA(16)
AT_SIGNATURE
Enterprise Root CA(1)
AT_SIGNATURE
Microsoft Internet Information Server
AT_SIGNATURE, AT_KEYEXCHANGE
Enterprise Root CA-Xchg(7)
AT_KEYEXCHANGE
Enterprise Root CA(5)
AT_SIGNATURE
Enterprise Root CA(8)
AT_SIGNATURE
Enterprise Root CA(15)
AT_SIGNATURE
Enterprise Root CA(3)
AT_SIGNATURE
| ||||||||||||
6. | 删除与 CA 关联的私钥。
certutil -delkey <CA Name> 如果您的 CA 名称包含空格,请用引号将名称括起。 注意:对于 CA 的所有密钥容器,重复此步骤。如果您的 CA 具有多个证书,则必须执行此步骤。 | ||||||||||||
7. | 再次列出密钥存储区以验证是否已删除 CA 的私钥。 | ||||||||||||
8. | 使用 Add/Remove Programs 卸载 Certificate Services。 |
Active Directory 对象
将 Microsoft Certificate Services 安装在属于域成员的服务器上时,会在 Active Directory 的 Configuration 容器中创建数个对象。这些对象是
| • | certificateAuthority 对象
| ||||||
| • | crlDistributionPoint 对象
| ||||||
| • | certificationAuthority 对象
| ||||||
| • | pKIEnrollmentService 对象
| ||||||
| • | msPKI-PrivateKeyRecoveryAgent 对象
|
当卸载 CA 时,仅删除 pKIEnrollmentService 对象。其他对象被保留,因为可能还有由 CA 颁发的未完成证书。为了使客户端成功处理这些未完成的证书,他们需要在 Active Directory 中找到 AIA 和 CDP 路径。较好的做法是吊销所有未完成的证书(原因:Cease of Operation),延长 CRL 的生存时间并将其发布在 Active Directory 中。当不同客户端处理这些未完成的证书时,验证应该失败而且这些证书将无法使用。
如果在 Active Directory 中维护 CDP 和 AIA 并不具有优先级,则可以安全删除这些对象。
从 Active Directory 中删除所有 Certification Services 对象
1. | 启动 Active Directory Sites and Services。 |
2. | 单击 View 菜单选项,然后选择 Show Services Node。 |
3. | 展开 Services,然后展开 Public Key Services。 |
4. | 选择 AIA 节点。 |
5. | 在右侧窗格中,找到证书颁发机构的 certificateAuthority 对象。删除此对象。 |
6. | 选择 CDP 节点。 |
7. | 在右侧窗格中,找到安装有 Certification Services 之服务器的 Container 对象。删除此容器及其包含的对象。 |
8. | 选择 Certification Authorities 节点。 |
9. | 在右侧窗格中,找到证书颁发机构的 certificateAuthority 对象。删除此对象。 |
10. | 选择 Enrollment Services 节点。 |
11. | 在右侧窗格中,验证在卸载 Certificate Services 时是否删除证书颁发机构的 pKIEnrollmentService 对象。如果未删除,请将其删除。 |
12. | 选择 Certificate Templates 节点。 |
13. | 在右侧窗格中,删除所有证书模板。 警告 仅当目录林中没有安装其他企业 CA 时才能删除所有证书模板。如果无意删除了模板,请从备份中将其恢复。 |
14. | 单击 Public key Services 节点并找到 NTAuthCertificates 对象。 |
15. | 如果目录林中没有安装其他企业 CA 或独立 CA,请删除此对象,否则请将其保留。 |
CA 数据库
当卸载 Certification Services 时,请完整保留 CA 数据库以备在其他服务器上重新创建 CA 时使用。
删除 CA 数据库
| • | 删除 %systemroot%\system32\certlog 文件夹。 |
域控制器清理
一旦删除 CA,则必须删除已颁发给所有域控制器的证书。可以使用 Resource Kit 中的 DSSTORE.EXE 非常轻松地完成此操作。
删除旧的域控制器证书
1. | 在域控制器上的命令提示符下,键入 certutil -dcinfo deleteBad |
2. | Certutil.exe 会尝试验证颁发给域控制器的所有 DC 证书。将会删除无法进行验证的证书。 |
此时,您可以重新安装 Certificate Services。安装完成之后,可将新的根证书发行到 Active Directory。当域客户端刷新其安全策略时,他们会将新的根证书自动下载到其受信任的根存储区中。
强制安全策略的应用
| • | 在命令提示符下,键入 gpupdate /target:computer |
证书吊销列表默认值
当到期之前吊销的证书到期之后,应将它们在已发布的基本 CRL 中保留一个完整的基本 CRL 周期(由 CA 定义)。当其他一个基本 CRL 到期之后,到期的证书将不再包括在已发布的 CRL 中。
注意:可以使用以下各命令将 CA 的 CRL 表导出并转换为 Microsoft Excel 或其他程序的以 Tab 分隔的文件:
certutil -view <name of CRL file> > crl.txt
可能会在 CA 上启用以下注册表设置以确保未从 CRL 中删除现在到期的已吊销证书。虽然大多数应用程序不会检查已到期证书的 CRL,但在特定情况下有时却需要保留已吊销的签名证书的公共列表。
要在 CA 上启用此选项,请使用以下命令:
certutil -setreg ca\CRLFlags +CRLF_PUBLISH_EXPIRED_CERT_CRLS
应用程序可靠性
许多应用程序都依赖于证书吊销列表 (CRL) 的可用性,并且如果 CRL 无法访问或过期则会彻底失败。一个此类示例为智能卡登录进程。在智能卡登录过程中,客户端会验证域控制器证书,而域控制器证书会验证用户(客户端)证书。如果任何一个验证失败,则智能卡登录进程将会失败。因此,当发布 CRL 时,请务必牢记以下最佳方法:
1. | CRL 应该在较长一段时间内保持有效,以便在硬件或软件出现故障的情况下允许恢复 CA。例如,为期一小时的 CRL 发布周期很可能不足以在出现故障的情况下执行硬件或软件恢复。 |
2. | 设置较长的 CRL 重叠期以消除和解决 CRL 发布或复制问题。有关 CRL 重叠设置,请参阅下一节。针对频繁发布发行 CA 的 CRL 周期必须能够在网络和服务器停机时仍存在,并考虑到 Active Directory 的复制延迟。CRL 发布周期必须长于最大的复制延迟。此外,证书的有效期必须足够长以允许修复断开的网络连接或恢复出现故障的系统。要启用此项,发布周期必须小于 CRL 的有效期。 |
3. | 可以将 CA 的私钥以及 CRL 的副本安全脱机,以便在出现灾难性故障时通过 certutil.exe 手动签名并发布有效的 CRL。 |
4. | 对于直接拒绝登录证书,应该在 Active Directory 中禁用帐户。当拒绝用户直接访问时,如果要吊销证书,更有效的方法是删除或禁用用户帐户。 |
5. | 只要可能,应该使用 Active Directory 方法发布 CRL,以便获得最高的可用性以及最佳的网络性能。始终考虑最短复制时间为 10 分钟的预期传播延迟。 |
6. | 如果 CRL 发布周期小于 Active Directory 目录林的复制收敛时间,不应将 CRL 发布到 Active Directory。 |
吊销大量证书
当吊销大量证书时(例如在解雇雇员期间),增量 CRL 大小可能会由于大量的项而显著增加,而且几乎所有的客户端都参考较旧的基本 URL。即使在吊销证书之后立即发布新的基本 CRL 也会出现这种情况,直到新的基本 CRL 完全传播。
要解决增量 CRL 非常大的这种特殊情况,请在 CA 上执行以下步骤:
1. | 在以下注册表项下修改注册表值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Name of CA> - 将 CRLOverLapPeriod 设为分钟。默认值为小时。 - 将 ClockSkewMinutes 设为 1 分钟。默认值为 10。 |
2. | 重新启动 CA。 |
3. | 发布新的基本 CRL。基本 CRL 具有仅为期两分钟的 CRLPropagationComplete 时间,所有后续增量 CRL 都参考此基本 CRL。 |
一旦完成此项,您便可以将 CRLOverLapPeriod 和 ClockSkew 恢复为默认值。
控制 CRL 大小
通常,可能有必要执行 CRL 分区以控制 CA 发布的基本 CRL 的大小。这对于执行证书吊销检查时控制复制到 Active Directory 中的数据大小以及客户端下载的数据对象的大小而言尤为重要。可以通过 CA 密钥续订执行 CRL 分区,密钥续订可以为所有后续颁发的证书有效地创建分区 CRL。有关此过程的更多信息,请参阅有关 CA 续订一节。
根据所选的吊销原因,对于每个吊销并添加到 CRL 中的证书,CRL 大小将线性增加 29 个字节。因此,当证书到达其原始到期日期时,已吊销的证书会从 CRL 中删除。CA 可以考虑对于每 100 至 125 K 的证书都使用新的密钥续订 CA,以便维持合理的 CRL 大小。这一发行数量的依据是假设大约 10% 的已颁发证书在其自然到期日期之前被吊销。如果您组织的实际或计划的吊销率偏高或偏低,请相应调整密钥续订策略。
重要信息:CA 使用的多个密钥和证书会在重新启动服务时影响 CA 的性能,因为在 CA 可以操作之前,每个证书和密钥都必须经过验证。注意:Windows 2000 和 Windows Server 2003 均不支持发布 IDP 扩展以使用分区 CRL;但是,Windows XP 和 Windows Server 2003 客户端可以使用分区 CRL(使用 IDP 扩展)。这在技术上不同于先前所述的方法。
删除到期的 CRL
默认情况下,在上一个已知 CDP 发布点上,CA 会出于历史目的在数据库中维护到期的 CRL,并且还会在目录中保留此 CRL。一旦 CA 的密钥到期,便会最后一次发布 CRL 而且不会对此 CRL 进行其他更改。最佳方法是在 CA 数据库中维护此 CRL 以便用于长期验证和审核。但是,可以使用以下命令将其删除:
certutil -setreg ca\CRLFlags + CRLF_DELETE_EXPIRED_CRLS
有关如何在 Windows 平台中执行 CRL 检查以及查看吊销状态的更多信息,请参阅http://www.microsoft.com/technet/prodtechnol/winxppro/support/tshtcrl.mspx
本节重点介绍各种自定义配置方案,这些方案可以与 Windows Server 2003 证书颁发机构配合使用以实现不同的操作环境要求。各种方案可以通过不同的方式应用到独立 CA 或企业 CA。
忽略 CA 的脱机 CRL 错误
通常,在颁发终端实体证书之前,Windows Server 2003 CA 始终会在 PKI 层次结构中检查所有证书的吊销(根 CA 证书除外)。要禁用此功能,请在 CA 上使用以下命令,然后重新启动 CA 服务:
certutil -setreg ca\CRLFlags +CRLF_REVCHECK_IGNORE_OFFLINE
配置序列号生成
在 Windows 2000 CA 中,会生成两种固定长度的序列号。可以修改注册表以生成任何一种序列号。默认的序列号为(从高到低):一个来自 GetTickCount() 的 DWORD + 一个 USHORT CA 证书索引(从 0 开始) + 一个 DWORD RequestId(10 个字节/20 个十六进制数字)。替换形式为:一个从注册表派生的字节 + 一个 DWORD RequestId + 8 字节的 CryptGenRandom 输出 + 一个 USHORT CA 证书索引 + 一个 DWORD RequestId(19 个字节/38 个十六进制数字)。
要启用替换形式并设置从注册表派生的字节,请使用以下命令:
certutil -setreg ca\HighSerial 0x33
可以修改指定的字节值以清除符号位并在高的半字节中设置一位,从而解决某些非 Microsoft PKI 应用程序中的序列号编码多义性错误。
在 Windows Server 2003 CA 中,会生成三种固定长度的序列号。默认和替换形式与 Windows 2000 中的形式相同。Windows 2000 替换形式针对每个序列号使用由 CryptGenRandom 生成的新的随机 8 个字节。Windows Server 2003 的新替换形式使用固定的随机 8 个字节(由 CryptGenRandom 在第一次尝试颁发证书期间生成)并保存在注册表中,形式为 8 字节的固定 CryptGenRandom 输出 + 一个 USHORT CA 证书索引 + 一个 DWORD RequestId(14 个字节/28 个十六进制的数字)。
要在注册表中启用新的替换形式,请使用以下命令:
certutil -setreg ca\HighSerial 0xffffffff
由于来自 CryptGenRandom 的固定随机 8 个字节作为一个字符串进行编码并保存在注册表中,因此,您可以直接设置它们并将它们用于新的序列号。事实上,可以在注册表中设置任何长度的十六进制字符串(但必须是偶数个数字)。如果在注册表中用于序列号的字节数共溢出 19 个字节,则此字节数便会减小。可以按照先前所述的那样对高字节进行操作,以避免某些非 Microsoft 应用程序出现问题。IETF 标准指定序列号最多为 20 个字节。
CA 密钥用法
通常,独立 CA 证书会包含作为密钥用法值的数字签名、证书签名以及 CRL 签名。对于要颁发从属 CA 证书(不带数字签名密钥用法值)的独立 CA,必须在此独立 CA 上执行以下命令,并在发出从属 CA 请求之前重新启动 CA 服务:
certutil -setreg policy\EditFlags -EDITF_ADDOLDKEYUSAGE
注意:企业 CA 根据从属 CA 模板设置强制密钥用法。
禁用 DN 长度强制
用于 OU 字段的原始 CCITT 规范指示应该将其限制为 64 个字符。通常,CA 会针对用于所有请求的证书接受方扩展强制 x.500 名称长度标准。深层 OU 路径可能会超过一般长度限制。
要禁用名称长度强制,请在 CA 上运行以下命令,然后重新启动 CA 服务:
certutil -setreg ca\EnforceX500NameLengths 0
要恢复默认设置,请在 CA 上运行以下命令,然后重新启动 CA 服务:
certutil -setreg ca\EnforceX500NameLengths 1
维护 CA 数据库
Windows Server 2003 允许通过 certutil.exe 手动清除证书记录(如果需要此操作来删除到期的证书记录)。The certutil.exe -deleterow 命令可用于执行此任务。只有本地管理员才能从 CA 数据库中删除多行。标准的 JET 数据库工具(例如 ESEUTIL.EXE)也可以用于证书服务器数据库以执行碎片维护等操作。有关其他信息,请参阅 Windows Server 2003 帮助文件。
保证 DCOM 界面的安全
默认情况下,Windows Server 2003 CA 不会强制对 ICertRequest 或 ICertAdmin DCOM 界面进行加密。通常,不需要此设置(特殊操作情况除外)而且不应启用。只有 Windows Server 2003 计算机在默认情况下才支持对这些界面进行 DCOM 加密。例如,Windows XP 客户端在默认情况下不会强制对发送给 Windows Server 2003 CA 的证书请求进行加密。
要启用强制加密,请从命令行执行以下过程:
certutil -setreg ca\InterfaceFlags [+|-]IF_ENFORCEENCRYPTICERTREQUEST certutil -setreg ca\InterfaceFlags [+|-]IF_ENFORCEENCRYPTICERTADMIN
启用跨林引用
现在,Windows Server 2003 本机 Active Directory 域支持跨林 Kerberos 信任和引用。默认情况下,Windows Server 2003 CA 不会在受信任的目录林中跟踪用户或计算机信息的引用。当未跟踪引用并且用户消息不可用时,如果用户从其他目录林中注册,则请求将会被拒绝。默认情况下不启用引用跟踪,因为在某些情况下可能会出现非有意的模板枚举和注册。
要启用引用跟踪,请在证书颁发机构上使用以下命令,并停止然后再启动服务:
certutil -setreg policy\EditFlags +EDITF_ENABLELDAPREFERRALS
注意:要使此操作生效,您必须使用 Kerberos 林信任而非一般的外部域信任。有关更多信息,请参阅 Windows Server 2003 帮助文件。
启用 Netscape 浏览器注册
必须对 Windows Server 2003 CA 进行以下配置更改,以允许 Netscape 6.2.2 以及更高版本的浏览器通过 Web 注册页面执行注册。
要启用接受方信息请求属性的分析(这对于 Netscape 浏览器注册而言是必需的),请使用以下命令:
certutil -setreg ca\CRLFlags +CRLF_ALLOW_REQUEST_ATTRIBUTE_SUBJECT
必须停止然后重新启动证书颁发机构才能使此更改生效。如果未启用此项,则当注册失败时,Netscape 客户端会在事件日志中收到以下错误:请求接受方名无效或太长。
在颁发机构吊销列表中添加 CRL 信息
Windows 客户端和 Windows 证书颁发机构都不能使用或处理颁发机构吊销列表。但是,可以执行一些手动步骤来人工创建 ARL。
要在目录中将 CRL 加入 ARL 属性中,请使用以下命令,其中 CAName、MachineName、域信息以及 CRL 的名称专用于 PKI 环境并且必须由管理员指定:
certutil -addstore "ldap:///CN=CAName(KeyIndex),CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=Domain2,DC=Domain1,DC=com?auth orityRevocationList" <name of CRL file.crl>
要从相同的属性中删除旧的 CRL,请使用同一命令,但使用 -delstore(而非 -addstore)标志,并指定 CRL 的哈希值(而非 CRL 文件)作为最后一个参数。要显示具有此属性的所有 CRL,请使用 -store 标志并且没有结尾参数。
允许和阻止证书请求中的扩展
在处理注册表中的三个 OID 列表*之前*进行模板扩展处理。
必须对 Windows Server 2003 CA 进行以下配置更改以配置 CA,从而允许自定义要在 CA 颁发的证书中添加或阻止的扩展。由于自定义扩展会损坏自定义 ASN.1 数据,因此,CA 无法分析和验证扩展中包含的信息。如果证书请求包含经过正确编码的自定义扩展信息,则可以配置 CA 以便将扩展传递至已颁发的证书而无需验证信息。扩展必须存在于请求中,因为 CA 不会生成此信息。在处理此类请求之前,应该通过注册颁发机构过程分析请求。
要启用通过使用自定义扩展(由组织定义)的 OID 传递的自定义扩展,请使用以下命令:
certutil -setreg policy\EnableRequestExtensionList +<OID of extension to be added>
必须停止然后重新启动证书颁发机构才能使此更改生效。
示例 默认情况下,在 Microsoft CA 上 Netscape certtype 扩展未启用,必须使用先前的机制将其启用。
要接受包括在已颁发证书中的 Netscape certtype 吊销扩展,请使用以下命令:
certutil -setreg policy\EnableRequestExtensionList +2.16.840.1.113730.1.1
要在安装 CA 期间通过 capolicy.inf 文件添加自定义扩展,或者使用 certreq.exe 以及 policy.inf 文件提交请求,可以将以下信息作为示例添加到 *.inf 文件的扩展部分。必须依照包括在扩展中的值的 Base64 表示形式来指定扩展的 OID。例如,AwIBBg== 是 ASN.1 值 03 02 01 06 的 Base64 表示形式: 03 02 01 06。
[Extensions]
1.3.6.1.5.5.7.1.3= AwIBBg==
要禁止将证书扩展添加到默认情况下包括在企业 CA 所颁发证书的一个中,例如 S/MIME 功能扩展,请使用以下命令,然后重新启动 CA:
certutil -setreg policy\DisableExtensionList +<OID of extension to be added>
注意:当遇到具有冲突 OID 的模板扩展时,企业 CA 将会覆盖 EnableRequestExtensionList 和 EnableEnrolleeRequestExtensionList 注册表值行为。如果证书请求包括 OID 与模板扩展冲突的扩展,则模板扩展将会覆盖请求扩展。EnableRequestExtensionList 和 EnableEnrolleeRequestExtensionList 注册表值仅使存在的两个注册表 OID 列表中所有扩展的禁用位清除。模板提供的扩展已清除禁用位。仅针对已配置为允许请求提供接受方信息的模板处理 EnableEnrolleeRequestExtensionList 中的 OID 列表。针对所有模板处理 EnableRequestExtensionList 中的 OID 列表。isableExtensionList 中的 OID 列表可以针对存在的列表中所有扩展*设置* 禁用位,而不论扩展的起源为何(请求或模板)。这可防止列出的扩展在已颁发证书中出现。还可针对所有模板处理此 OID 列表。
向 SubjectAltName 扩展添加电子邮件地址
以下配置选项仅适用于独立 CA。在 Active Directory 中,企业 CA 可以根据用户帐户信息将电子邮件地址信息自动添加到证书中(如果在模板中指定的话)。在独立 CA 上,针对接受方命名设置的几个配置选项中的一个可以使 CA 将请求者(经过身份验证的用户发出请求)的电子邮件地址加入到已颁发证书的 SubjAltName 扩展中。
要设置策略模块以允许此选项,请在独立 CA 上使用 regedit.exe 执行以下步骤:
在注册表中,将以下 REG_SZ 值设为 Email,然后重新启动 CA:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CAName>
\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\SubjectAltName2
<CAName> 为本地 CA 的名称。
在 Web 注册页面上,通过指定以下请求属性字符串将电子邮件请求属性设为用户电子邮件名称:email:joe@northwindtraders.com. 作为替换选项,可将电子邮件名称设为接受方名称 E= email:joe@northwindtraders.com(完全接受方 DN 的一部分)的一部分,或者如果 Web 页面上具有单独的 EMail 文本框,可将其仅设为 joe@northwindtraders.com。
以下是将 Subject Alt Name 2 扩展指定为请求属性的语法;它仅在 Windows Server 2003 CA 服务器上有效,并需要在注册表中启用处理此属性的标志:
SAN:1.2.3.4={asn}Base64String&email=foo@bar.com&dns=foo.bar.com&dn="CN=xxx,OU=xxx,DC=xxx"&url=
"http://foo.com/default.htlm"&ipaddress=172.134.10.134&oid=1.2.3.4&upn=
foo@bar.com&guid=f7c3ac41-b8ce-4fb4-aa58-3d1dc0e36b39
要将 Subject Alt Name 2 扩展设为特定 UPN 值,请执行以下步骤:
SAN:upn=foo@bar.com
要将其设为特定 DNS 名称,请执行以下步骤:
SAN:dns=foo.bar.com
要将其设为这两者,请执行以下步骤:
SAN:upn=foo@bar.com&dns=foo.bar.com
要针对 CA 启用注册表标志,请执行以下步骤:
certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
or certutil -setreg policy\EditFlags +0x40000
然后重新启动 CA。
如何更改 CA 所颁发证书的有效期
企业 CA 通过基于 Active Directory 之模板上的设置来设置已颁发证书的有效性。独立 CA 根据注册表值强制已颁发证书的有效期。要更改独立 CA 所颁发的所有证书的默认有效期,请设置以下注册表值:
HKLM\system\currentcontrolset\services\certsvc\configuration\<ca name>\validityperiod (=days/months/years)
HKLM\system\currentcontrolset\services\certsvc\configuration\<ca name>\validityperiodunits (=number of above)
增加 CA 数据库会话限制
默认情况下,Windows Server 2003 证书颁发机构仅允许 20 个到 JET BLUE 数据库(用于存储证书信息等)的并发会话。CA 本身可以使用数个连接以及客户端注册请求或者可查看数据库的管理工具。通常,对于大多数操作而言,20 个并发会话限制应该足够。要增加最多会话限制,请使用以下命令将最大会话数增加到 30,这是使用 Windows Server 2003 证书颁发机构测试的最高限制:
certutil -setreg DBSessionCount 30
必须停止然后重新启动证书颁发机构才能使此更改生效。
查看请求属性
请求属性是传递给证书服务器并存储在数据库中供策略模块或退出模块使用的名称-值字符串对。它们旨在用于特定用户用途以控制自定义策略或退出模块的行为。它们不会直接影响证书内容。它们可通过由策略模块使用来影响证书内容,但这由自定义策略模块(而非默认策略模块)确定。要查看特定请求的请求属性,请使用以下命令(用要查看的请求的请求 ID 来替换 nnnn):
certutil -view -restrict requested=nnnn -out attrib:all
从目录中删除 CA 信息
企业 CA 信息存储在 Active Directory 的配置容器中,尤其是存储在 Public Key Services 节点的 Enrollment Services 容器中。在 Active Directory 中,可以使用 Windows Server 2003 Resource Kit 中提供的 PKI Health 工具来查看或删除存储在配置分区 Public Key Services 节点中的各种信息。有关更多信息,请参阅 Windows Server 2003 Resource Kit。
对于 Windows Server 2003 证书颁发机构所颁发证书中的接受方 RDN(相关辨别名称),以下列表包含了平台中受支持的 OID:
COUNTRY_NAME "2.5.4.6"
ORGANIZATION_NAME "2.5.4.10"
ORGANIZATIONAL_UNIT_NAME "2.5.4.11"
COMMON_NAME "2.5.4.3"
LOCALITY_NAME "2.5.4.7"
STATE_OR_PROVINCE_NAME "2.5.4.8"
TITLE "2.5.4.12"
GIVEN_NAME "2.5.4.42"
INITIALS "2.5.4.43"
SUR_NAME "2.5.4.4"
DOMAIN_COMPONENT "0.9.2342.19200300.100.1.25"
RSA_emailAddr "1.2.840.113549.1.9.1"
STREET_ADDRESS "2.5.4.9"
RSA_unstructName "1.2.840.113549.1.9.2"
RSA_unstructAddr "1.2.840.113549.1.9.8"
DEVICE_SERIAL_NUMBER "2.5.4.5"
默认情况下,允许在证书接受方中存在以下 RDN 元素,当还在版本 2 的模板中指定时按照以下顺序:
| • | 0: CommonName |
| • | 1: OrganizationalUnit |
| • | 2: Organization |
| • | 3: Locality |
| • | 4: State |
| • | 5: Country |
| • | 6: EMail |
通过运行以下命令,可以在 CA 上显示默认列表:
certutil -getreg ca\SubjectTemplate
通过运行以下命令,可以将 RDN 组件添加到允许的列表中。在此例中,将标题添加到 CA 注册表中的列表结尾。
certutil -setreg ca\SubjectTemplate +title
要将 DC= 添加到从属独立 CA 所颁发证书的接受方中,请运行以下命令:
certutil -setreg ca\SubjectTemplate +DomainComponent
要使用 Windows Server 2003 CA 启用旧式 Netscape (iPlanet) 应用程序证书吊销服务,请在 CA 上运行以下命令:
certutil -SetReg Policy\RevocationType +AspEnable
如果 IIS (ASP) 页面位于单独计算机上,或者如果 Netscape 应用程序服务器使用的默认 URL 不同于默认值,则可以使用以下命令行示例对其进行查看:
certutil -getreg Policy\RevocationURL
其中,值存储在以下注册表项中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\ <CAName> \PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\RevocationURL:
RevocationURL REG_SZ = https://%1/CertEnroll/nsrev_%3.asp
可以在注册表中更改 URL。更改之后重新启动 CA。可以在吊销 URL 中使用以下替换变量:
SERVERDNSNAME "%1"
SERVERSHORTNAME %2"
SANITIZEDCANAME "%3"
CERTFILENAMESUFFIX "%4"
DOMAINDN "%5"
CONFIGDN "%6"
SANITIZEDCANAMEHASH "%7"
CRLFILENAMESUFFIX "%8"
CRLDELTAFILENAMESUFFIX "%9"
DSCRLATTRIBUTE "%10"
DSCACERTATTRIBUTE "%11"
DSUSERCERTATTRIBUTE "%12"
DSKRACERTATTRIBUTE "%13"
DSCROSSCERTPAIRATTRIBUTE "%14"
请注意,要使此吊销服务工作,则连接到此 URL 的应用程序、服务或帐户必须在 Certification Authority MMC 管理单元中具有 READ 权限。
重要信息:允许对 CA 进行匿名访问可能会公开隐私或安全事宜。
Windows Server 2003 证书颁发机构具有将 SMTP(电子邮件)消息发送到与证书颁发机构上各种操作有关的用户、管理员以及 Certificate Managers 的功能。此功能通过 CA 的默认退出模块启用并在注册表中进行配置。默认情况下,未针对 CA 启用任何消息。
示例配置批处理文件
可以将以下批处理文件用作示例以便在不直接编辑注册表的情况下配置 CA 的 SMTP 退出模块功能。SMTP 退出模块可以使用存储在 CA 数据库中的不同值。BodyArg 是要定义并稍后由变量名称(例如 %%1、%%2 等等)调用的数据库列的列表。必须按照定义变量的连续顺序调用这些变量。可以在批处理文件中使用以下文本以在 CA 上配置 SMTP 退出模块选项:
@echo off cd\ %systemdrive% :Setup_SMTP_Server // Section for setting the name of the exchange server to be used and type of authentication to be used. 1 means to use NTLM, 2 means to user Kerberos, 0 is for Basic authentication certutil -setreg exit\smtp\SMTPServer "exchange1.nwtraders.com" certutil -setreg exit\smtp\SMTPAuthenticate 1 :Setup_CA_For_Exit_Module // Section for turning events on or off. In this case, on. certutil -setsmtpinfo -p "administrator" Administrator certutil -setreg exit\smtp\eventfilter +EXITEVENT_CRLISSUED certutil -setreg exit\smtp\eventfilter +EXITEVENT_CERTDENIED certutil -setreg exit\smtp\eventfilter +EXITEVENT_CERTISSUED certutil -setreg exit\smtp\eventfilter +EXITEVENT_CERTPENDING certutil -setreg exit\smtp\eventfilter +EXITEVENT_CERTREVOKED certutil -setreg exit\smtp\eventfilter +EXITEVENT_SHUTDOWN certutil -setreg exit\smtp\eventfilter +EXITEVENT_STARTUP :CrlIssued // Section for setting CRLIssued parameters. certutil -setreg exit\smtp\CRLissued\To "Administrator@nwtraders.com" certutil -setreg exit\smtp\CRLissued\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\CRLissued\CC "administrator@Nwtraders.com" certutil -setreg exit\smtp\CRLissued\bodyformat "A new CRL has been issued" certutil -setreg exit\smtp\CRLissued\titleformat "A new CRL was issued by %%1" certutil -setreg exit\smtp\CRLissued\BodyArg "" certutil -setreg exit\smtp\CRLissued\TitleArg +"SanitizedCAName" :Denied // Section for setting Denied parameters certutil -setreg exit\smtp\Denied\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\Denied\CC "administrator@Nwtraders.com" certutil -setreg exit\smtp\Denied\titleformat "Your certificate request was denied by %%1" certutil -setreg exit\smtp\Denied\BodyArg "" Certutil -setreg exit\smtp\Denied\BodyFormat "" call Stop_Start_CA certutil -setreg exit\smtp\Denied\BodyArg +"Request.RequestID" certutil -setreg exit\smtp\Denied\BodyArg +"Request.RequesterName" certutil -setreg exit\smtp\Denied\BodyArg +"Request.SubmittedWhen" certutil -setreg exit\smtp\Denied\BodyArg +"Request.DistinguishedName" certutil -setreg exit\smtp\Denied\BodyArg +"Request.DispositionMessage" certutil -setreg exit\smtp\Denied\BodyArg +"Request.StatusCode" Certutil -setreg exit\smtp\Denied\BodyFormat +"Your Request ID is: %%1" Certutil -setreg exit\smtp\Denied\BodyFormat +"The Requester Name is: %%2" Certutil -setreg exit\smtp\Denied\BodyFormat +"The Request Submission Date was: %%3" Certutil -setreg exit\smtp\Denied\BodyFormat +"Subject Name: %%4" Certutil -setreg exit\smtp\Denied\BodyFormat +"Request Disposition Message: %%5" Certutil -setreg exit\smtp\Denied\BodyFormat +"Request StatusCode: %%6" certutil -setreg exit\smtp\Denied\TitleArg +"SanitizedCAName" :Certificate_Issued // Section for setting Issued parameters. certutil -setreg exit\smtp\Issued\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\Issued\CC "administrator@Nwtraders.com" certutil -setreg exit\smtp\Issued\titleformat "Your certificate has been issued by %%1" certutil -setreg exit\smtp\Issued\BodyArg +"RawCertificate" Certutil -setreg exit\smtp\Issued\BodyFormat "" net stop certsvc call Stop_Start_CA Certutil -setreg exit\smtp\Issued\BodyFormat +"Request ID: %%1" Certutil -setreg exit\smtp\Issued\BodyFormat +"UPN: %%2" Certutil -setreg exit\smtp\Issued\BodyFormat +"Requester Name: %%3" Certutil -setreg exit\smtp\Issued\BodyFormat +"Serial Number: %%4" Certutil -setreg exit\smtp\Issued\BodyFormat +"Valid not before: %%5" Certutil -setreg exit\smtp\Issued\BodyFormat +"Valid not after: %%6" Certutil -setreg exit\smtp\Issued\BodyFormat +"Distinguished Name: %%7" Certutil -setreg exit\smtp\Issued\BodyFormat +"Certificate Template: %%8" Certutil -setreg exit\smtp\Issued\BodyFormat +"Certificate Hash: %%9" Certutil -setreg exit\smtp\Issued\BodyFormat +"Request Disposition Message: %%10" Certutil -setreg exit\smtp\Issued\BodyFormat +"Copy and paste the following in Notepad, save and install" Certutil -setreg exit\smtp\Issued\BodyFormat +"Binary Certificate: %%11" :Certificate_Pending // Section for setting Pending parameters. certutil -setreg exit\smtp\Pending\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\Pending\CC "administrator@Nwtraders.com" certutil -setreg exit\smtp\Pending\titleformat "Your certificate is pending on %%1" Certutil -setreg exit\smtp\Pending\BodyFormat "" call Stop_Start_CA Certutil -setreg exit\smtp\Pending\BodyFormat +"Request ID: %%1" Certutil -setreg exit\smtp\Pending\BodyFormat +"UPN: %%2" Certutil -setreg exit\smtp\Pending\BodyFormat +"Requester Name: %%3" Certutil -setreg exit\smtp\Pending\BodyFormat +"Time submitted: %%4" Certutil -setreg exit\smtp\Pending\BodyFormat +"Distinguished Name: %%5" Certutil -setreg exit\smtp\Pending\BodyFormat +"Certificate Template used: %%6" Certutil -setreg exit\smtp\Pending\BodyFormat +"Request Disposition Message: %%7" :Certificate_Revoked // Section for setting Revoked parameters. certutil -setreg exit\smtp\Revoked\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\Revoked\CC "administrator@Nwtraders.com" certutil -setreg exit\smtp\Revoked\titleformat "Your certificate was revoked by %%1" Certutil -setreg exit\smtp\Revoked\BodyFormat "" call Stop_Start_CA Certutil -setreg exit\smtp\Revoked\BodyFormat +"Request ID: %%1" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Revoked when: %%2" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Effective: %%3" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Reason for being revoked: %%4" Certutil -setreg exit\smtp\Revoked\BodyFormat +"UPN: %%5" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Requester Name: %%6" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Serial Number: %%7" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Was not valid until: %%8" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Was not valid after: %%9" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Distinguished Name: %%10" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Certificate Template: %%11" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Certificate Hash: %%12" Certutil -setreg exit\smtp\Revoked\BodyFormat +"Request Status: %%13" :Certificate_Authority_Shutdown // Section for setting Shutdown parameters. certutil -setreg exit\smtp\Shutdown\To "administrator@Nwtraders.com" certutil -setreg exit\smtp\Shutdown\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\Shutdown\CC "administrator@Nwtraders.com" :Certificate_Authority_Startup // Section for setting Startup parameters. certutil -setreg exit\smtp\Startup\To "administrator@Nwtraders.com" certutil -setreg exit\smtp\Startup\From "administrator@Nwtraders.com" certutil -setreg exit\smtp\Startup\CC "administrator@Nwtraders.com" :Stop_Start_CA // This is just a sub-routine for stopping and starting the CA. net stop certsvc & net start certsvc :Exit echo Certificate Services SMTP Exit module has now been configured. echo . pause exit
吊销状态
当已吊销证书时,SMTP 退出模块允许进行电子邮件通知。但是,数据库列中的一列 (Request.RevokedReason) 仅可用于在电子邮件正文中向用户返回吊销值,而不是字符串。例如, Key Compromise 将会显示为值 1。吊销值及其相应的定义(如在 RFC 2459 中定义)如下所示:
0 = Unspecified
1 = Key Compromise
2 = CA Compromise
3 = Change of Affiliation
4 = Superseded
5 = Cease of Operation
6 = Certificate Hold
可能有必要在电子邮件正文中列出这些值以方便解释吊销原因。
在使用具有 Microsoft Exchange 2000 Server 之证书颁发机构的 SMTP 退出模块时,最佳方法是配置 CA 以通过 SSL(SMTP 协议)与 Exchange Server 通讯。一旦已在 CA 上配置 SMTP 退出模块以用于操作,应该执行以下步骤启用这种增强的安全配置:
确保针对 Exchange Server 颁发服务器证书的根 CA 受到 CA 的信任。
配置 Exchange Server SMTP 协议以通过注册服务器证书(使用 Exchange System Manager 控制台中的向导)来使用 SSL。
在 Exchange 计算机上打开 Exchange System Manager,方法是选择 Start >
Programs > Microsoft Exchange > System Manager.
在左侧窗格视图中,展开 Servers > SERVER_NAME > Protocols > SMTP > Default SMTP Virtual Server。
右键单击 Default SMTP Virtual Server,然后选择 Properties。
单击 Access 选项卡,然后在 Secure communication 下选择 Certificate 按钮。
遵循向导中的说明进行操作,当完成时,返回到 Default SMTP Virtual Server Properties 并选择 Communication。
选中 Require secure channel 复选框。建议设置 Require 128-bit encryption。
在 CA 上的 CMD 提示下,键入以下命令:
certutil -setreg exit\smtp\http://schemas.microsoft.com/cdo/configuration/smtpusessl 1
注意:这会将具有值 1 的 REG_SZ 值http://schemas.microsoft.com/cdo/configuration/smtpusessl 添加到注册表中的 SMTP 项。
有关 Windows Server 2003 的最新信息,请参阅 Windows Server 2003 Web 站点,网址为http://www.microsoft.com/windowsserver2003/default.mspx
Windows XP 主页
http://www.microsoft.com/windowsxp/default.asp
Windows XP 和 Windows Server 2003 PKI 中有哪些新功能?
http://www.microsoft.com/technet/prodtechnol/winxppro/plan/default.mspx
Windows XP 技术文章
http://www.microsoft.com/technet/prodtechnol/winxppro/default.mspx
CMC - Certificate Management Messages over CMS
http://www.ietf.org/rfc/rfc2797.txt?number=2797
Troubleshooting Certificate Status and Revocation 白皮书
http://www.microsoft.com/technet/prodtechnol/winxppro/support/tshtcrl.mspx
Certificate Auto-enrollment in Windows XP
http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/default.mspx
最终用户或管理员可以运行以下基本 VBScript,以便根据需要枚举目录林中的所有企业 CA、列出单个 CA 以及显示每个 CA 的当前用户所具有的角色:
on error resume next
dim certadm
dim configobj
dim config
dim index
dim roles(9)
roles(0) = "CAADMIN"
roles(1) = "OFFICER"
roles(2) = "AUDITOR"
roles(3) = "OPERATOR"
roles(8) = "READ"
roles(9) = "ENROLL"
set certadm = CreateObject("CertificateAuthority.Admin")
Call ExitOnError("Createobject CertificateAuthority.Admin")
set configobj = CreateObject("CertificateAuthority.Config")
Call ExitOnError("Createobject CertificateAuthority.Config")
index = 0
do while index <> -1
config = ""
config = configobj.GetField("config")
if(config <> "") then
wscript.echo "CA: ", config
PrintRoles(config)
end if
index = configobj.Next()
Call ExitOnError("ICertConfig::Next")
loop
sub PrintRoles(config)
value = certadm.GetMyRoles(config)
Call ExitOnError("GetMyRoles")
wscript.echo "Roles: 0x" & hex(value)
for count=0 to 9
if((count<4 or count>7) and value mod 2) then
wscript.echo " ", roles(count)
end if
value = value \ 2
next
End Sub
Sub ExitOnError(failedCall)
' if err.number <> 0 then
' wscript.echo "Error calling " + failedCall + " : " + err.value
' end if
End Sub
这是最初文档,可以在最终商业发布此处所述的软件之前对其进行大量更改。
本文档中包含的信息代表发布之时 Microsoft Corporation 关于所述问题的当前观点。由于 Microsoft 必须对变化的市况作出反应,因此不应该将其解释为 Microsoft 所作出的承诺,Microsoft 无法保证发布之后所有信息的准确性。
本文档仅用于提供信息。MICROSOFT 对本文档中的信息没有任何明示或暗示保证。
用户必须遵守所有适用的版权法。在不限制版权权利的条件下,未经 Microsoft Corporation 的明确书面许可,不得因任何目的以任何形式或任何方法(电子、机械、影印、录制或其他)复制本文档的任何部分、将本文档的任何部分存入或引入检索系统或者传播本文档的任何部分。
Microsoft 具有涵盖本文档所述主题的专利、专利申请、商标、版权或其他知识产权。除非 Microsoft 在任何书面许可协议中有明确表述,否则,提供本文档时并未许可您使用这些专利、商标、版权或其他知识产权。
2003. Microsoft Corporation。保留所有权利。Microsoft、Active Directory、Visual Studio、Windows 以及 Windows NT 是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。
此处所提及的真实公司和产品的名称是其各自所有者的商标。