CAPolicy.inf 语法

CAPolicy.inf 是一个配置文件,用于定义应用于根 CA 证书和根 CA 颁发的所有证书的扩展、约束和其他配置设置。 在开始根 CA 的安装例程之前,必须在主机服务器上安装 CAPolicy.inf 文件。 若要修改根 CA 的安全限制,必须续订根证书,并且必须在续订过程开始之前在服务器上安装更新的 CAPolicy.inf 文件。

CAPolicy.inf 是:

  • 由管理员手动创建和定义的文件

  • 在创建根和从属 CA 证书期间会用到的文件

  • 在签名并颁发证书的签名 CA(不是授予请求的 CA)上定义的文件

创建 CAPolicy.inf 文件后,必须先将其复制到服务器的 %systemroot% 文件夹中,然后才能安装 ADCS 或续订 CA 证书。

使用 CAPolicy.inf 便可指定和配置各种 CA 属性和选项。 以下部分介绍用于创建适合特定需求的 .inf 文件的所有选项。

CAPolicy.inf 文件结构

以下术语用于描述 .inf 文件结构:

  • – 是包含一组逻辑键的文件区域。 .inf 文件中的段名称显示在方括号中。 许多(但并非全部)段用于配置证书扩展。

  • – 是条目的名称,显示在等号的左侧。

  • – 是参数,显示在等号右侧。

在以下示例中, [Version] 是节, 签名 是密钥, “$Windows NT$” 是值。

Example:

[Version]
Signature="$Windows NT$"

Version

将文件标识为 .inf 文件。 Version 是唯一一个必需段,并且必须位于 CAPolicy.inf 文件的开头。

PolicyStatementExtension

列出组织已定义的策略,以及这些策略是可选还是强制性策略。 多个策略之间以逗号分隔。 这些名称在特定部署环境中具有实际意义,或者与用于检查是否存在这些策略的自定义应用程序相关。

对于定义的每个策略,必须具有定义该特定策略设置的段。 对于每个策略,需要提供用户定义的对象标识符 (OID),以及要显示为策略语句的文本或指向策略语句的 URL 指针。 该 URL 可以采用 HTTP、FTP 或 LDAP URL 的形式。

如果要在策略语句中使用描述性文本,CAPolicy.inf 的后续三行将如下所示:

[InternalPolicy]
OID=1.1.1.1.1.1.1
Notice="Legal policy statement text"

如果要使用 URL 来托管 CA 策略语句,则后续三行将如下所示:

[InternalPolicy]
OID=1.1.1.1.1.1.2
URL=https://pki.wingtiptoys.com/policies/legalpolicy.asp

此外,还应注意:

  • 支持包含多个 URL 和通知键。

  • 支持策略同一个段中同时包含通知和 URL 键。

  • 带空格的 URL 或带空格的文本必须用引号括起来, 这适用于 URL 密钥,而不考虑其中显示的部分。

以下是策略一个段中同时包含多个通知和 URL 的示例:

[InternalPolicy]
OID=1.1.1.1.1.1.1
URL=https://pki.wingtiptoys.com/policies/legalpolicy.asp
URL=ftp://ftp.wingtiptoys.com/pki/policies/legalpolicy.asp
Notice="Legal policy statement text"

CRLDistributionPoint

可以在 CAPolicy.inf 中为根 CA 证书指定 CRL 分发点 (CDP)。 安装 CA 后,可以配置 CA 颁发的每个证书中的 CDP URL。 根 CA 证书显示了在 CAPolicy.inf 文件此段中指定的 URL。

[CRLDistributionPoint]
URL=http://pki.wingtiptoys.com/cdp/WingtipToysRootCA.crl

CRL 分发点 (CDP) 支持:

  • HTTP
  • 文件 URL
  • LDAP URL
  • 多个 URL

Important

CRL 分发点 (CDP) 不支持 HTTPS URL。

  • 带空格的 URL 必须用引号括起来。

  • 如果未指定 URL(即 ,如果文件中存在 [CRLDistributionPoint] 节但为空),则从根 CA 证书中省略 CRL 分发点扩展。 设置根 CA 时,最好这样做。 Windows 不会对根 CA 证书执行吊销检查,因此根 CA 证书中的 CDP 扩展是多余的。

  • CA 可以发布到 FILE UNC,例如,可以发布到共享,即客户端通过 HTTP 进行检索的网站的文件夹。

  • 请仅在要设置根 CA 或续订根 CA 证书时使用此段。 CA 可确定从属 CA CDP 扩展。

AuthorityInformationAccess

可以在 CAPolicy.inf 中为根 CA 证书指定颁发机构信息访问点。

[AuthorityInformationAccess]
URL=http://pki.wingtiptoys.com/Public/myCA.crt

有关授权信息访问段的一些其他说明:

  • 支持多个 URL。

  • 支持 HTTP、FTP、LDAP 和 FILE URL。 不支持 HTTPS URL。

  • 仅当要设置根 CA 或续订根 CA 证书时,才使用此段。 从属 CA AIA 扩展由颁发从属 CA 证书的 CA 确定。

  • 带空格的 URL 必须用引号括起来。

  • 如果未指定任何 URL(即 ,如果文件中存在 [AuthorityInformationAccess] 节但为空),则会从根 CA 证书中省略颁发机构信息访问扩展。 同样,当没有比根 CA 更高级别的颁发机构需要由其证书链接引用时,这将是首选设置。

certsrv_Server

CAPolicy.inf 的 [certsrv_server] 段是可选的。 [certsrv_server] 用于指定要续订或安装的 CA 的续订键长度、续订有效期,以及证书吊销列表 (CRL) 有效期。 此段中的键均非必需键, 其中许多设置的默认值足以满足大多数需求,可在 CAPolicy.inf 文件中省略。 或者,可在安装 CA 后更改其中许多设置。

示例如下所示:

[certsrv_server]
RenewalKeyLength=2048
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=5
CRLPeriod=Days
CRLPeriodUnits=2
CRLDeltaPeriod=Hours
CRLDeltaPeriodUnits=4
ClockSkewMinutes=20
LoadDefaultTemplates=True
AlternateSignatureAlgorithm=0
ForceUTF8=0
EnableKeyCounting=0

RenewalKeyLength 仅设置续订的密钥大小。 仅在续订 CA 证书期间生成新的键对时,才使用此设置。 安装 CA 时设置初始 CA 证书的键大小。

使用新键对续订 CA 证书时,可以增加或减少键长度。 例如,如果已将根 CA 键大小设置为 4096 或更高字节,但发现 Java 应用或网络设备仅支持 2048 字节的键大小, 无论增加还是减少此大小,都必须重新颁发该 CA 颁发的所有证书。

RenewValidityPeriodRenewValidityPeriodUnits 在续订旧根 CA 证书时建立新的根 CA 证书的生存期。 它仅适用于根 CA, 从属 CA 的证书生存期由其上级决定。 RenewalValidityPeriod 可具有以下值:“小时”、“天”、“周”、“月”和“年”。

CRLPeriodCRLPeriodUnits 为基本 CRL 建立有效期。 CRLPeriod 可以具有以下值:小时、天、周、月和年。

CRLDeltaPeriodCRLDeltaPeriodUnits 建立增量 CRL 的有效期。 CRLDeltaPeriod 可以具有以下值:小时、天、周、月和年。

安装 CA 后,可以配置所有这些设置:

Certutil -setreg CACRLPeriod Weeks
Certutil -setreg CACRLPeriodUnits 1
Certutil -setreg CACRLDeltaPeriod Days
Certutil -setreg CACRLDeltaPeriodUnits 1

请记得重启 Active Directory 证书服务,使任何更改生效。

LoadDefaultTemplates 仅在安装企业 CA 期间适用。 此设置(true 或 False,或者 1 或 0)指示是否使用任何默认模板配置 CA。

在 CA 的默认安装中,系统会将默认证书模板的子集添加到证书颁发机构管理单元的“证书模板”文件夹中。 这意味着,在安装角色后启动 AD CS 服务时,具有足够权限的用户或计算机可以立即注册证书。

你可能不想在安装 CA 后立即颁发任何证书,因此可以使用 LoadDefaultTemplates 设置来防止系统将默认模板添加到企业 CA。 如果 CA 上没有配置任何模板,它便无法颁发证书。

AlternateSignatureAlgorithm 配置 CA 以支持 CA 证书和证书请求的 PKCS#1 V2.1 签名格式。 在根 CA 上将它设置为 1 时,CA 证书将包含 PKCS#1 V2.1 签名格式。 在从属 CA 上设置时,从属 CA 将创建包含 PKCS#1 V2.1 签名格式的证书请求。

ForceUTF8 将使用者和颁发者可分辨名称中的相对可分辨名称的默认编码更改为 UTF-8。 它仅影响支持 UTF-8 的 RDN,例如 RFC 定义为目录字符串类型的 RDN。 例如,域组件 (DC) 的 RDN 支持 IA5 或 UTF-8 编码,而国家/地区 RDN (C) 仅支持可打印字符串编码。 因此,ForceUTF8 指令会影响 DC RDN,但不会影响 C RDN。

EnableKeyCounting 将 CA 配置为每次使用 CA 签名密钥时递增计数器。 除非具有硬件安全模块 (HSM) 和关联的加密服务提供程序(CSP,支持密钥计数),否则不要启用此设置。 Microsoft Strong CSP 或 Microsoft 软件密钥存储提供程序 (KSP) 不支持密钥计数。

创建 CAPolicy.inf 文件

在安装 AD CS 之前,请使用特定于部署的设置来配置 CAPolicy.inf 文件。

先决条件: 必须是管理员组的成员。

  1. 在计划安装 AD CS 的计算机上,打开 Windows PowerShell,键入 notepad.exe ,然后按 Enter

  2. 输入以下文本:

    [Version]
    Signature="$Windows NT$"
    [PolicyStatementExtension]
    Policies=InternalPolicy
    [InternalPolicy]
    OID=1.2.3.4.1455.67.89.5
    Notice="Legal Policy Statement"
    URL=https://pki.corp.contoso.com/pki/cps.txt
    [Certsrv_Server]
    RenewalKeyLength=2048
    RenewalValidityPeriod=Years
    RenewalValidityPeriodUnits=5
    CRLPeriod=weeks
    CRLPeriodUnits=1
    LoadDefaultTemplates=0
    AlternateSignatureAlgorithm=1
    [CRLDistributionPoint]
    [AuthorityInformationAccess]
    
  3. 选择 “文件”,然后选择“ 另存为”。

  4. 导航到 %systemroot% 文件夹。

  5. 确保设置了以下选项:

    • 文件名 设置为 CAPolicy.inf

    • “保存类型” 设置为“所有文件”

    • 编码ANSI

  6. 选择“保存”

  7. 当系统提示覆盖该文件时,请选择“ ”。

    CAPolicy.inf 文件的“另存为”位置

    Caution

    确保以 inf 扩展名保存 CAPolicy.inf。 如果未在文件名末尾专门键入 .inf ,并按所述选择选项,该文件将保存为文本文件,并且不会在 CA 安装期间使用。

  8. 关闭记事本。

Important

在 CAPolicy.inf 中,你可以看到有一行指定 URL https://pki.corp.contoso.com/pki/cps.txt。 CAPolicy.inf 的“内部策略”部分只会作为你会如何指定证书实行声明 (CPS) 的位置的示例出现。 本指南未提供有关如何创建证书实行声明 (CPS) 的说明。