使用 Active Directory 证书服务的 PKI 设计注意事项

使用 Active Directory 证书服务规划公钥基础结构部署时,应考虑一些事项。 可在此处找到成功安装和配置 PKI 环境所需的事项。

在高层次上,你应该:

  • 规划适合你的组织的公钥基础结构 (PKI)。
  • 如果你打算使用硬件安全模块 (HSM),请遵照 HSM 供应商说明安装和配置它。
  • 如果你想要修改默认安装设置,请创建合适的 CAPolicy.inf
  • 选择加密选项
  • 确定 CA 名称
  • 确定有效期
  • 选择 CA 数据库
  • 授权信息访问和证书吊销列表分发点设置

规划 PKI

若要确保你的组织可以充分利用你的 Active Directory 证书服务 (AD CS) 安装,必须相应地规划 PKI 部署。 在安装任何 CA 之前,你应确定你需要多少 CA 以及采用何种配置。 例如,你需要企业根 CA 还是独立根 CA? 如何处理证书审批请求? 如何管理证书吊销? 创建合适的 PKI 设计可能很耗时,但它对于 PKI 的成功非常重要。

使用 HSM

HSM 是与操作系统分开管理的专用硬件设备。 除了用于加速签名和加密的专用加密处理器,这些模块还为 CA 密钥提供安全硬件存储。 操作系统通过 CryptoAPI 接口使用 HSM,并且 HSM 将用作加密服务提供程序 (CSP) 设备。

HSM 通常是 PCI 适配器,但它们也可作为基于网络的设备、串行设备和 USB 设备。 如果组织计划实施两个或两个以上 CA,你可以安装一个基于网络的 HSM,并在多个 CA 上共享它。

若要使用 HSM 设置 CA,必须先安装并配置 HSM,然后才能使用需要存储在 HSM 上的密钥设置任何 CA。

请考虑 CAPolicy.inf 文件

虽然安装 AD CS 时不需要 CAPolicy.inf 文件,但它可以用于自定义 CA 的设置。 CAPolicy.inf 文件包含在安装 CA 或在续订 CA 证书时使用的各种设置。 必须创建 CAPolicy.inf 文件,并将其存储在 %systemroot% 目录(通常为 C:\Windows)中以供使用。

CAPolicy.inf 文件中包含的设置很大程度上取决于你想要创建的部署类型。 例如,根 CA 具有的 CAPolicy.inf 文件可能如下所示:

[Version]
Signature= "$Windows NT$"
[Certsrv_Server]
RenewalKeyLength=4096
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=20
LoadDefaultTemplates=0

选择加密选项

为证书颁发机构 (CA) 选择加密选项可显著影响该 CA 的安全、性能和兼容性。 尽管默认加密选项可能适用于大多数 CA。 对于更深入了解加密和具有此灵活性需求的管理员和应用程序开发人员而言,能够实现自定义选项十分有用。 通过使用加密服务提供程序 (CSP) 或密钥存储提供程序 (KSP) 可以实现加密选项。

CSP 是 Windows 操作系统中提供常规加密功能的硬件和软件组件。 可以编写 CSP 来提供各种加密和签名算法。

当你选择提供程序、哈希算法和密钥长度时,请慎重考虑你打算使用的应用程序和设备可以支持哪些加密选项。 虽然最好是选择最强的安全选项,但并非所有应用程序和设备都可以支持这些选项。

“当 CA 访问私钥时允许管理员交互”是一个选项,它通常与硬件安全模块 (HSM) 配合使用。 此选项允许加密提供程序在访问该 CA 的私钥时提示用户进行其他身份验证。 例如,要求管理员在每个加密操作之前输入密码。

内置加密提供程序支持特定的密钥长度和哈希算法,如下表中所述。

加密提供程序 密钥长度 哈希算法
Microsoft Base Cryptographic Provider v1.0 - 512
- 1024
- 2048
- 4096
- SHA1
- MD2
- MD4
- MD5
Microsoft Base DSS Cryptographic Provider - 512
- 1024
SHA1
Microsoft Base Smart Card Crypto Provider - 1024
- 2048
- 4096
- SHA1
- MD2
- MD4
- MD5
Microsoft Enhanced Cryptographic Provider v1.0 - 512
- 1024
- 2048
- 4096
- SHA1
- MD2
- MD4
- MD5
Microsoft Strong Cryptographic Provider - 512
- 1024
- 2048
- 4096
- SHA1
- MD2
- MD4
- MD5
RSA#Microsoft Software Key Storage Provider - 512
- 1024
- 2048
- 4096
- SHA1
- SHA256
- SHA384
- SHA512
- MD2
- MD4
- MD5
DSA#Microsoft Software Key Storage Provider - 512
- 1024
- 2048
SHA1
ECDSA_P256#Microsoft Software Key Storage Provider 256 - SHA1
- SHA256
- SHA384
- SHA512
ECDSA_P384#Microsoft Software Key Storage Provider 384 - SHA1
- SHA256
- SHA384
- SHA512
ECDSA_P521#Microsoft Software Key Storage Provider 521 - SHA1
- SHA256
- SHA384
- SHA512
RSA#Microsoft Smart Card Key Storage Provider - 1024
- 2048
- 4096
- SHA1
- SHA256
- SHA384
- SHA512
- MD2
- MD4
- MD5
ECDSA_P256#Microsoft Smart Card Key Storage Provider 256 - SHA1
- SHA256
- SHA384
- SHA512
ECDSA_P384#Microsoft Smart Card Key Storage Provider 384 - SHA1
- SHA256
- SHA384
- SHA512
ECDSA_P521#Microsoft Smart Card Key Storage Provider 521 - SHA1
- SHA256
- SHA384
- SHA512

确定 CA 名称

在你的组织中配置证书颁发机构 (CA) 之前,应建立一个 CA 命名约定。

你可以使用任何 Unicode 字符创建名称,但如果考虑到互操作性,你可能想要使用 ANSI 字符集。 例如,如果 CA 名称包含特殊字符(如下划线),则某些类型的路由器无法使用网络设备注册服务来注册证书。

如果你使用非拉丁字符(如西里尔文、阿拉伯语或中文字符),则 CA 名称包含的字符必须少于 64 个。 如果你仅使用非拉丁字符,则 CA 名称的长度不能超过 37 个字符。

在 Active Directory 域服务 (AD DS) 中,在将服务器配置为 CA 时指定的名称将成为 CA 的公用名。 公用名反映在 CA 颁发的每个证书中。 因此,不要为 CA 的公用名使用完全限定域名,这一点很重要。 这样一来,获取证书副本的恶意用户就不能标识和使用 CA 的完全限定域名以创建潜在安全漏洞。

CA 名称不应与计算机名称(NetBIOS 或 DNS 名称)相同。 同样,如果没有使 CA 颁发的所有证书失效,就不能在安装 Active Directory 证书服务 (AD CS) 后更改服务器名称。

若要在安装 AD CS 之后更改服务器名称,必须卸载 CA、更改服务器名称、使用相同的密钥重新安装 CA,并修改注册表来使用现有 CA 密钥和数据库。 如果重命名了域,则无需重新安装 CA,但是,你需要重新配置 CA 以支持名称更改。

确定有效期

基于证书的加密使用公钥加密来保护数据并对其进行签名。 随着时间的推移,攻击者可能会获取已使用公钥保护的数据,并尝试从中得到私钥。 如果他们有足够的时间和资源,此私钥可能泄露,从而导致所有受保护的数据完全失去保护。 此外,由证书保证的名称可能需要随时间推移进行更改。 因为证书是名称和公钥之间的一种绑定方式,因此当二者之一发生任何更改时,应续订证书。

每个证书都具有效期。 有效期结束后,证书就不再被当作可接受或可用的凭据。

在自己的有效期结束后,CA 无法颁发有效的凭据。 最佳实践是在其有效期过半时续订 CA 证书。 在安装 CA 时,你应该计划此日期,并确保将其记录为未来的任务。

选择 CA 数据库

证书颁发机构的数据库是硬盘驱动器上的一个文件。 除了此文件,其他文件将用作事务日志,并且它们将在对该数据库进行更改之前收到所有相关修改。 由于这些文件可能被经常和同时访问,因此你可能需要将数据库和事务日志保留在单独的卷上。

证书数据库和日志文件的位置保存在以下注册表位置中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration

该注册表包含以下值:

  • DBDirectory
  • DBLogDirectory
  • DBSystemDirectory
  • DBTempDirectory

授权信息访问和证书吊销列表分发点设置

安装根或从属 CA 后,应在 CA 颁发任何证书之前配置授权信息访问 (AIA) 和 CRL 分发点 (CDP) 扩展。 AIA 扩展指定可在何处找到适用于 CA 的最新证书。 CDP 扩展指定可在何处找到由 CA 签名的最新 CRL。 这些扩展将应用到由该 CA 颁发的所有证书。

配置这些扩展可确保此信息包含在每个 CA 颁发的证书中,以便它适用于所有客户端。 使用这些扩展使得由证书链未经验证或证书吊销导致的失败情况减少,这些问题会导致 VPN 无法成功连接、智能卡登录失败或电子邮件签名未经验证。

作为 CA 管理员,你可以添加、删除或修改 CRL 分发点以及 CDP 和 AIA 证书颁发的位置。 修改 CRL 分发点的 URL 仅影响新颁发的证书。 以前颁发的证书会继续引用原始位置,这就是你应在 CA 分发任何证书之前建立这些位置的原因。

在配置 CDP 扩展 URL 时,请考虑以下指南:

  • 避免在脱机根 CA 上发布增量 CRL。 因为你不会在脱机根 CA 上吊销许多证书,因此可能不需要增量 CRL。
  • 根据你的需要,在证书颁发机构的“属性扩展”选项卡的“扩展”选项卡中调整默认的 LDAP://https:// URL 位置。
  • 在 HTTP Internet 或 Extranet 位置上发布 CRL,以便组织外部的用户和应用程序可以执行证书验证。 你可以发布 CDP 位置的 LDAP 和 HTTP URL,以使客户端使用 HTTP 和 LDAP 检索 CRL 数据。
  • 请记住,Windows 客户端始终按先后顺序检索 URL 列表,直到检索到有效的 CRL 为止。
  • 使用 HTTP CDP 位置为运行非 Windows 操作系统的客户端提供可访问的 CRL 位置。

后续步骤

要了解有关部署 AD CS 的详细信息,请参阅实现和管理 Active Directory 证书服务