证书颁发机构指南

 

适用对象:Windows Server 2012 R2, Windows Server 2012

证书颁发机构 (CA) 负责证明用户、计算机和组织的身份。 通过颁发一个经过数字签名的证书,CA 可对某个实体进行身份验证并担保该身份。 CA 还可以管理、吊销和续订证书。

证书颁发机构可能指以下对象:

  • 担保最终用户身份的组织

  • 组织用于颁发和管理证书的服务器

通过安装 Active Directory 证书服务 (AD CS) 的证书颁发机构角色服务,你可以配置 Windows 服务器以充当 CA。

在安装 CA 角色服务之前,你应该:

  1. 规划适合你的组织的公钥基础结构 (PKI)。

  2. 如果你打算使用一个硬件安全模块 (HSM),请遵照 HSM 供应商说明安装和配置它。

  3. 如果你想要修改默认安装设置,请创建相应的 CAPolicy.inf。

规划 PKI

若要确保你的组织可以充分利用你的 Active Directory 证书服务 (AD CS) 安装,必须相应地规划 PKI 部署。 在安装任何 CA 之前,你应确定将安装多少 CA 以及采用何种配置。 创建适当的 PKI 设计可能很耗时,但它对于 PKI 的成功非常重要。

有关详细信息和资源,请参阅 Microsoft TechNet 中的 PKI 设计指南

使用 HSM

使用硬件安全模块 (HSM) 可以增强 CA 和 PKI 的安全性。

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 的企业的 CAPolicy.inf 文件可能如下所示:

[Version]
Signature= "$Windows NT$"
[PolicyStatementExtension]
Policies = LegalPolicy, LimitedUsePolicy
[LegalPolicy]
OID = 1.1.1.1.1.1.1.1.1
URL = "https://www.contoso.com/pki/Policy/USLegalPolicy.asp"
URL = "ftp://ftp.contoso.com/pki/Policy/USLegalPolicy.txt"
[LimitedUsePolicy]
OID = 2.2.2.2.2.2.2.2.2
URL = "https://www.contoso.com/pki/Policy/USLimitedUsePolicy.asp"
URL = "ftp://ftp.contoso.com/pki/Policy/USLimitedUsePolicy.txt"
LoadDefaultTemplates=0

备注

  1. 示例 CAPolicy.inf 中显示的 OID 仅为示例。 个别组织应获得其自身的 OID。 有关 OID 的详细信息,请参阅从 ISO 名称注册机构获取根 OID

  2. 有关详细信息,请参阅 CAPolicy.inf 语法

选择 CA 配置设置

以下部分介绍你将在安装 CA 二进制安装文件后选择的配置选项。

选择安装类型

企业 CA 将与 Active Directory 域服务 (AD DS) 集成。 它们向 AD DS 发布证书和证书吊销列表 (CRL)。 企业 CA 使用存储在 AD DS 中的信息(包括用户帐户和安全组)以批准或拒绝证书申请。 企业 CA 使用证书模板。 颁发证书时,企业 CA 使用证书模板中的信息生成具有该证书类型相应属性的证书。

如果你想要启用自动证书批准和自动用户证书注册,请使用企业 CA 颁发证书。 这些功能仅在 CA 基础结构与 Active Directory 集成时才可用。 此外,仅企业 CA 可以颁发支持智能卡登录的证书,因为此过程需要智能卡证书自动映射到 Active Directory 中的用户帐户。

备注

默认情况下,你必须是 Enterprise Admins 组的成员,才能安装和配置企业 CA。 如果你希望较低权限的域管理员安装和配置企业 CA,请参阅企业证书颁发机构的委派安装

“独立 CA”不需要 AD DS,并且不使用证书模板。 如果你使用独立 CA,则必须在证书申请中包含有关申请的证书类型的所有信息。 默认情况下,所有提交到独立 CA 的证书申请都保留在挂起队列中,直到 CA 管理员批准它们。 你可以配置独立 CA 以在申请时自动颁发证书,但这比较不安全,并且通常不建议这样做,因为申请未通过身份验证。

从性能角度而言,使用可自动颁发证书的独立 CA 将使你颁发证书的速率快于使用企业 CA 的速率。 但是,除非你使用的是自动颁发,否则使用独立 CA 颁发大量证书通常会产生较高的管理成本,因为管理员必须手动审查每个证书申请,然后批准或拒绝申请。 因此,最好是在用户没有用户帐户且证书的颁发和管理量相对较低时,针对 Extranets 和 Internet 上的公钥安全应用程序使用独立 CA。

当你使用的是非 Microsoft 目录服务或 AD DS 不可用时,你必须使用独立 CA 颁发证书。 你可以在组织中同时使用企业和独立证书颁发机构,如下表所述。

选项

企业 CA

独立 CA

在 Active Directory 中发布证书,并使用 Active Directory 验证证书申请。

使 CA 脱机。

不建议

配置 CA 以自动颁发证书。

不建议

允许管理员手动批准证书申请。

允许使用证书模板。

对 Active Directory 申请进行身份验证。

选择 CA 类型

可以将企业和独立 CA 配置为根 CA 或从属 CA。 可以将从属 CA 进一步配置为中间 CA(也称为策略 CA)或发证 CA

指定根 CA

根 CA 是位于证书层次结构顶部的 CA。 组织中的客户端必须无条件地信任它。 所有证书链都终止于根 CA。 无论是使用企业 CA 还是或独立 CA,你都需要指定根 CA。

由于根 CA 是证书层次结构中的顶部 CA,由根 CA 颁发的证书的主题字段与证书颁发者字段具有相同的值。 同样,因为证书链在到达自签名的 CA 时终止,因此所有自签名 CA 都是根 CA。 可以在企业级确定将某个 CA 指定为受信任的根 CA,或者在本地由单个 IT 管理员进行确定。

根 CA 将用作证书颁发机构信任模型的基础。 它可保证主题的公钥对应于它所颁发的证书主题字段中显示的标识信息。 不同的 CA 还可能使用不同的标准验证此关系;因此,在选择信任该颁发机构验证公钥之前,了解根证书颁发机构的策略和过程很重要。

根 CA 是层次结构中最重要的 CA。 如果你的根 CA 已泄露,则层次结构中的所有 CA 和从其颁发的所有证书都被视为已泄露。 通过使根 CA 从网络断开连接,并使用从属 CA 将证书颁发给其他从属 CA 或最终用户,可以最大程度地保护根 CA 的安全。

从属 CA

不是根 CA 的 CA 将被视为从属 CA。 层次结构中的第一个从属 CA 可从根 CA 获取其 CA 证书。 此第一个从属 CA 可以使用此密钥来颁发证书,此类证书可验证其他从属 CA 的完整性。 这些较高级别的从属 CA 称为中间 CA。 虽然中间 CA 从属于根 CA,但它可用作一个或多个从属 CA 的较高级别的认证机构。

中间 CA 通常称为策略 CA,因为它通常用于分隔可由策略区分的证书类。 例如,策略分离包括 CA 提供的保障级别,或用于区分不同的最终实体填充的 CA 地理位置。 策略 CA 可以联机,也可以脱机。

警告

不能将根 CA 转换为从属 CA,反之亦然。

存储私钥

私钥是 CA 身份的一部分,并且必须保护私钥以免泄露。 很多组织使用硬件安全模块 (HSM) 保护 CA 私钥。 如果未使用 HSM,则私钥存储在 CA 计算机上。 有关详细信息,请参阅 Microsoft TechNet 中的硬件安全模块 (HSM)

脱机 CA 应存储在安全位置,并且不连接网络。 在颁发证书时,发证 CA 的过程将使用其私钥,因此处理 CA 时,私钥必须处于可访问状态(联机)。 在所有情况下,都应以物理方式保护 CA 及 CA 上的私钥。

查找现有密钥

如果你已有想要在安装期间使用的现有私钥,则可以使用“现有密钥”屏幕找到该密钥。 你可以使用“更改”按钮来修改加密提供程序,以及你想要搜索现有密钥的 CA(可选)。

查找现有证书

如果你已有包含 CA 私钥的证书,则可以使用“现有证书”屏幕进行查找。 你可以使用“导入”按钮以打开“导入现有证书”对话框,然后查找你现有的 PKCS #12 文件。

选择加密选项

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

重要

针对 CA 使用 RSA 证书时,请确保密钥长度至少为 2048 位。 你不得尝试针对 CA 使用低于 1024 位的 RSA 证书。 如果已安装小于 1024 位的 RSA 密钥,则不会启动 CA 服务 (certsvc)。

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

KSP 可以为运行服务器版本为 Windows Server 2008 R2 和客户端版本最低为 Windows Vista 的计算机提供强密钥保护。

重要

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

如果你的支持要求发生变化并且你随后能够使用更强的安全选项(如迁移到 KSP 和更强的哈希算法),请参阅将证书颁发机构密钥从加密服务提供程序 (CSP) 迁移到密钥存储提供程序 (KSP)

“当 CA 访问私钥时允许管理员交互”是一个选项,该选项通常与硬件安全模块 (HSM) 一起使用。 这允许加密提供程序在访问该 CA 的私钥时提示用户进行其他身份验证。 通过要求管理员在每个加密操作前输入密码,此选项可用来帮助防止未经审批即使用 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) 后更改服务器名称。 有关 CA 名称的其他注意事项,请参阅 TechNet Wiki 文章:证书颁发机构 (CA) 名称的注意事项

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

获取证书申请

在安装根证书颁发机构 (CA) 之后,很多组织将安装一个或多个从属 CA,以在公钥基础结构 (PKI) 上实现策略限制并向最终客户端颁发证书。 使用至少一个从属 CA 有助于防止不必要地公开根 CA。 安装从属 CA 时,必须从父 CA 中获取证书。

如果父 CA 处于联机状态,则可以使用“将证书请求发送给父级 CA”选项,然后按 CA 名称或计算机名称选择父 CA。

如果父 CA 处于脱机状态,则应使用“将证书申请保存到目标计算机上的文件”选项。 此过程对父 CA 是唯一的。 父 CA 至少应提供包含从属 CA 新颁发的证书的文件,最好是包含其完整证书路径。

如果获取了不包含完整证书路径的从属 CA 证书,则安装的新从属 CA 必须能够在启动时构建有效的 CA 链。 执行以下操作来创建有效的证书路径:

  • 如果父 CA 不是根 CA,则在计算机的“中间证书颁发机构”证书存储中安装父 CA 的证书。

  • 安装此链中任何其他中间 CA 的证书。

  • 将根 CA 的证书安装到受信任的根证书颁发机构存储中。

备注

应在证书存储中安装这些证书,然后才能在你刚刚设置的从属 CA 上安装 CA 证书。

验证有效期

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

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

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

选择 CA 数据库

与许多数据库一样,证书颁发机构的数据库是硬盘驱动器上的一个文件。 除了此文件,其他文件将用作事务日志,并且它们将在对该数据库进行更改之前收到所有相关修改。 由于可能会经常、同时访问这些文件,因此最好在单独的硬盘驱动器或高性能磁盘配置(如带区卷)上保留数据库和事务日志。

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration

该注册表包含以下值:

  • DBDirectory

  • DBLogDirectory

  • DBSystemDirectory

  • DBTempDirectory

备注

安装完成后,可以移动证书数据库和日志文件。 有关信息,请参阅 Microsoft 知识库中的文章 283193

配置 CA

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

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

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

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

  • 避免在脱机根 CA 上发布增量 CRL。 因为你没有在脱机根 CA 上吊销许多证书,因此可能不需要增量 CRL。

  • 根据你的需要,在证书颁发机构的“属性扩展”选项卡的“扩展”选项卡上调整默认 LDAP:/// 和 HTTP:// URL 位置。

  • 在 HTTP Internet 或 Extranet 位置上发布 CRL,以便组织外部的用户和应用程序可以执行证书验证。 你可以发布 CDP 位置的 LDAP 和 HTTP URL,以使客户端使用 HTTP 和 LDAP 检索 CRL 数据。

  • 请记住,Windows 客户端始终按先后顺序检索 URL 列表,直到检索到有效的 CRL 为止。

  • 使用 HTTP CDP 位置为运行非 Windows 操作系统的客户端提供可访问的 CRL 位置。

备注

有关 CRL 和增量 CRL 的详细信息,请参阅配置证书吊销

Windows PowerShell 和 certutil 支持变量数字(以百分号 (%) 开头),以帮助发布 CDP 和 AIA 位置。 CA 的“属性扩展”选项卡支持带有括号的变量。 下表显示了接口之间的等同变量并描述了它们的含义。

变量

“扩展”选项卡名称

说明

%1

<ServerDNSName>

CA 计算机的 DNS 名称。 如果已连接到 DNS 域,则它是完全限定的域名;否则,它是计算机的主机名。

%2

<ServerShortName>

CA 服务器的 NetBIOS 名称

%3

<CaName>

CA 名称

%4

<CertificateName>

这允许其他修订版的证书各自具有独特的后缀。

%4

不使用

%6

<ConfigurationContainer>

Active Directory 域服务 (AD DS) 中配置容器的位置

%7

<CATruncatedName>

被截断为 32 个字符的 CA 名称,结尾处带有哈希

%8

<CRLNameSuffix>

在将 CRL 发布到文件或 URL 位置时,这会在文件名上插入后缀。

%9

<DeltaCRLAllowed>

发布增量 CRL 时,这将 CRLNameSuffix 变量替换为单独的后缀,以将增量 CRL 与 CRL 区分开来。

%10

<CDPObjectClass>

在发布到 LDAP URL 时使用的 CRL 分发点的对象类标识符。

%11

<CAObjectClass>

在发布到 LDAP URL 时使用的 CA 的对象类标识符。

发布 AIA 扩展

AIA 扩展可告诉客户端计算机它们可以在哪个位置找到要进行验证的证书。 这允许客户端确认是否可以信任该证书。

可以使用证书颁发机构界面、Windows PowerShell 或 certutil 命令来配置 AIA 扩展。 下表描述了通过使用这些方法可与 AIA 扩展结合使用的选项。

界面复选框名称

Windows PowerShell 参数

Certutil 值

包含在已颁发证书的 AIA 扩展中

-AddToCertificateAia

2

包含在联机证书状态协议 (OCSP) 扩展中

-AddToCertificateOcsp

32

本部分中用于发布 AIA 扩展的示例表示以下方案:

  • 域名为 corp.contoso.com。

  • 域中有一个名为 App1 的 Web 服务器。

  • App1 有一个允许 CA 读写权限的名为 PKI 的共享文件夹。

  • App1 的 DNS CNAME 为 www 并具有名为 PKI 的共享虚拟目录。

  • 客户端计算机应为 AIA 信息使用的第一个协议为 HTTP。

  • 客户端计算机应为 AIA 信息使用的第二个协议为 LDAP。

  • 正在配置的 CA 是联机发证 CA。

  • 未使用 OCSP。

使用该界面发布 AIA 扩展

该界面使用以上表中所述的变量和复选框名称。 可以通过证书颁发机构界面访问该界面。 从内容窗格中,右键单击 CA、单击“属性”,然后单击“扩展”。 在“选择扩展”中,单击“授权信息访问 (AIA)”。

AIA 属性

图 1 AIA 扩展菜单

在用户界面中配置的位置和设置如下所示:

  • C:\Windows\system32\CertSrv\CertEnroll\<ServerDNSName>_<CaName><CertificateName>.crt

  • https://www.contoso.com/pki/\<ServerDNSName>_<CaName><CertificateName>.crt

    • 包含在已颁发证书的 AIA 扩展中
  • file://\\App1.corp.contoso.com\pki\<ServerDNSName>_<CaName><CertificateName>.crt

  • ldap:///CN=<CATruncatedName>,CN=AIA,CN=Public Key Services,CN=Services,<ConfigurationContainer><CAObjectClass>

    • 包含在已颁发证书的 AIA 扩展中

使用 Windows PowerShell 发布 AIA 扩展

以下 Windows PowerShell 命令可用于为给定方案配置 AIA 扩展:

$aialist = Get-CAAuthorityInformationAccess; foreach ($aia in $aialist) {Remove-CAAuthorityInformationAccess $aia.uri -Force};
Add-CAAuthorityInformationAccess -AddToCertificateAia https://www.contoso.com/pki/%1_%3%4.crt
Add-CAAuthorityInformationAccess -AddToCertificateAia file://\\App1.corp.contoso.com\pki\%1_%3%4.crt
Add-CAAuthorityInformationAccess -AddToCertificateAia "ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11"

备注

  • 如果你使用 Windows PowerShell 添加 AIA 路径,则现有路径保持不变。 示例中的第一个 Windows PowerShell 命令将删除所有现有路径。 有关使用 Windows PowerShell 删除 AIA 路径的详细信息,请参阅 Remove-CAAuthorityInformationAccess

  • 不能使用 Add-CAAuthorityInformationAccess Windows PowerShell cmdlet 添加本地路径。 CA 证书将自动发布到默认位置 %systemroot%\system32\certsrv\certenroll。

使用 certutil 发布 AIA 扩展

以下 certutil 命令可用于为给定方案配置 AIA 扩展:

certutil -setreg CA\CACertPublicationURLs "1:C:\Windows\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2:https://www.contoso.com/pki/%1_%3%4.crt\n1:file://\\App1.corp.contoso.com\pki\%1_%3%4.crt\n2:ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11"

备注

  • 更改这些路径后,请务必重新启动 CertSvc。通过运行以下 Windows PowerShell 命令,可重新启动 CertSvc:restart-service certsvc

  • 在 certutil 命令中,将所有路径输入为用引号括起来的一个连续字符串。 每个路径都由 \n 分隔。

发布 CDP 扩展

CDP 扩展告知客户端计算机可在何处找到最新 CRL,以便客户端可以确认尚未吊销特定证书。

可以使用证书颁发机构界面、Windows PowerShell 或 certutil 命令来配置 CDP 扩展。 下表描述了通过使用这些方法可与 CDP 扩展结合使用的选项。

界面复选框名称

Windows PowerShell 参数

Certutil 值

将 CRL 发布到此位置

-PublishToServer

1

包含在所有 CRL 中。

(指定手动发布时在 Active Directory 中进行发布的位置。)

-AddToCrlCdp

8

包含在 CRL 中。

(客户端使用该值查找增量 CRL 的位置。)

-AddToFreshestCrl

4

包含在已颁发证书的 CDP 扩展中。

-AddToCertificateCdp

2

将增量 CRL 发布到此位置。

-PublishDeltaToServer

64

包含在已颁发 CRL 的 IDP 扩展中。

-AddToCrlIdp

128

备注

非 Windows 客户端使用发证分发点 (IDP) 扩展验证证书吊销。 IDP 扩展允许在使用第三方 CA 时部署分区的 CRL。 分区的 CRL 允许第三方 CA 在每个 CRL 内仅发布特定证书类型的 CRL。 例如,你可以使最终证书和 CA 证书具有单独的 CRL。 具体来说,可以在 IDP 中设置以下选项:

  1. onlyContainUserCerts。 IDP 中的此选项仅允许在基本约束扩展中不具有值 cA 的证书。 如果该证书不包含基本约束扩展,则假定它不是 CA。

  2. onlyContainsCACerts。 IDP 中的此选项仅允许将具有带 cA 集的基本约束扩展的证书包含在 CRL 中。

如果你允许将增量 CRL 发布到 Internet Information Services (IIS) Web 服务器,则必须通过在 IIS 配置的“system.web”部分中设置 requestFiltering 元素的 allowDoubleEscaping=true,来修改默认的 IIS 配置。 例如,如果你想要在 IIS 上允许默认网站的 PKI 虚拟目录的双重转义,请在 IIS Web 服务器上运行以下命令:appcmd set config "Default Web Site/pki" -section:system.webServer/security/requestFiltering -allowDoubleEscaping:true。 有关详细信息,请参阅 AD CS:Web 服务器应允许包含“+”字符的 URI 发布增量 CRL

本部分中用于发布 CDP 扩展的示例表示以下方案:

  • 域名为 corp.contoso.com。

  • 域中有一个名为 App1 的 Web 服务器。

  • App1 有一个允许 CA 读写权限的名为 PKI 的共享文件夹。

  • App1 的 DNS CNAME 为 www 并具有名为 PKI 的共享虚拟目录。

  • 客户端计算机应为 CDP 信息使用的第一个协议为 HTTP。

  • 客户端计算机应为 CDP 信息使用的第二个协议为 LDAP。

  • 正在配置的 CA 是联机发证 CA。

  • 未使用 IDP。

使用该界面发布 CDP 扩展

该界面使用上表中所述的变量和复选框名称。 可以通过证书颁发机构界面访问该界面。 从内容窗格中,右键单击 CA、单击“属性”,然后单击“扩展”。 在“选择扩展”中,单击“CRL 分发点 (CDP)”。

CDP 属性

图 2 CDP 扩展菜单

在界面中配置的位置和设置如下所示:

  • C:\Windows\System32\CertSrv\CertEnroll\<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl

    • 将 CRL 发布到此位置

    • 将增量 CRL 发布到此位置

  • https://www.contoso.com/pki/\<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl

    • 包含在 CRL 中。 客户端使用该值查找增量 CRL 的位置。

    • 包含在已颁发证书的 CDP 扩展中

  • file://\\App1.corp.contoso.com\pki\<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl

    • 将 CRL 发布到此位置

    • 将增量 CRL 发布到此位置

  • ldap:///CN=<CATruncatedName><CRLNameSuffix>,CN=<ServerShortName>,CN=CDP,CN=Public Key Services,CN=Services,<ConfigurationContainer><CDPObjectClass>

    • 包含在所有 CRL 中。 指定手动发布时,在 Active Directory 中进行发布的位置。

    • 包含在证书的 CDP 扩展中

使用 Windows PowerShell 发布 CDP 扩展

以下 Windows PowerShell 命令用于为给定方案配置 CDP 扩展:

$crllist = Get-CACrlDistributionPoint; foreach ($crl in $crllist) {Remove-CACrlDistributionPoint $crl.uri -Force};
Add-CACRLDistributionPoint -Uri C:\Windows\System32\CertSrv\CertEnroll\%3%8%9.crl -PublishToServer -PublishDeltaToServer
Add-CACRLDistributionPoint -Uri https://www.contoso.com/pki/%3%8%9.crl -AddToCertificateCDP -AddToFreshestCrl
Add-CACRLDistributionPoint -Uri file://\\App1.corp.contoso.com\pki\%3%8%9.crl -PublishToServer -PublishDeltaToServer
Add-CACRLDistributionPoint -Uri "ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10" -AddToCrlCdp -AddToCertificateCdp

备注

如果你使用 Windows PowerShell 添加 CDP 路径,则现有路径保持不变。 示例中的第一个 Windows PowerShell 命令将删除所有现有路径。 有关使用 Windows PowerShell 删除 CDP 路径的详细信息,请参阅 Remove-CACrlDistributionPoint

使用 certutil 发布 CDP 扩展

以下 certutil 命令将为给定方案配置 CDP 扩展:

certutil -setreg CA\CRLPublicationURLs "65:C:\Windows\system32\CertSrv\CertEnroll\%3%8%9.crl\n6:https://www.contoso.com/pki/%3%8%9.crl\n65:file://\\App1.corp.contoso.com\pki\%3%8%9.crl\n10:ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10"

备注

  • 更改这些路径后,请务必重新启动 CA 服务。 从 Windows PowerShell 中,你可以通过运行以下命令重新启动 CertSvc:restart-service certsvc

  • 在 certutil 命令中,将所有路径输入为用引号括起来的一个连续字符串,但使用 \n 分隔每个路径。

若要发布 CRL,可以以管理员身份从 Windows PowerShell 或运行命令提示符在 CA 上运行命令 certutil -crl。 有关 CRL 配置和发布的详细信息,请参阅配置证书吊销

验证配置

若要验证 CA 配置,可以从 Windows PowerShell 或从命令提示符窗口运行以下命令:

命令

说明

Certutil -CAInfo

针对 CA 显示名称、区域设置、对象标识符 (OID) 和 CRL 的状态。

Certutil -getreg

显示 CA 注册表配置。

Certutil -ADCA

确认企业 CA 的配置。

你可以使用企业 PKI 视图 (PKIView.msc) 工具检查 AIA 和 CDP 发布配置。 有关详细信息,请参阅企业 PKI

你还可以使用在线响应者角色服务来检查证书吊销。 有关在线响应者的详细信息,请参阅在线响应者安装、配置和疑难解答指南

相关内容