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 文件。
先决条件:你必须是管理员组的成员。
在计划安装 AD CS 的计算机上,打开 Windows PowerShell,键入“notepad.exe”,然后按 ENTER。
输入以下文本:
[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]
选择“文件”,然后选择“另存为”。
导航到 %systemroot% 文件夹。
确保设置了以下选项:
将“文件名”设置为“CAPolicy.inf”
“保存类型” 设置为“CAPolicy.inf” “所有文件”
编码 是 ANSI
选择“保存”。
当系统提示你覆盖文件时,选择“是”。
注意
确保以 inf 扩展名保存 CAPolicy.inf。 如果不在文件名末尾特意键入“.inf” 并按描述选择各个选项,文件将另存为文本文件,并在 CA 安装期间不得使用。
关闭记事本。
重要
在 CAPolicy.inf 中,你可以看到有一行指定 URL https://pki.corp.contoso.com/pki/cps.txt
。 CAPolicy.inf 的“内部策略”部分只会作为你会如何指定证书实行声明 (CPS) 的位置的示例出现。 本指南未提供有关如何创建证书实行声明 (CPS) 的说明。