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] 是段,Signature 是键,"$Windows NT$" 是值。

示例:

[Version]
Signature="$Windows NT$"

版本

将文件标识为 .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

重要

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 颁发的所有证书。

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

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

CRLDeltaPeriod 和 CRLDeltaPeriodUnits 可建立增量 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 可将“使用者”和“颁发者”可分辨名称中的相对可分辨名称 (RDN) 的默认编码更改为 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”

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

    • 编码ANSI

  6. 选择“保存”。

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

    CAPolicy.inf 文件的另存为位置

    注意

    确保以 inf 扩展名保存 CAPolicy.inf。 如果不在文件名末尾特意键入“.inf” 并按描述选择各个选项,文件将另存为文本文件,并在 CA 安装期间不得使用。

  8. 关闭记事本。

重要

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