第 11 章 配置证书配置文件
作为 CA 的安装过程的一部分,可以通过修改配置文件的配置文件直接在文件系统中修改证书注册配置文件。安装时默认配置集存在默认文件 ; 需要新配置集时,会创建新的配置文件。配置文件存储在 CA 配置文件目录 instance_directory/ca/profiles/ca/
中,如 /var/lib/pki/pki-ca/ca/profiles/ca/
。该文件名为 profile_name.cfg
。配置集规则的所有参数都可以在这些配置集配置文件中设置或修改。配置集规则可以是输入、输出、身份验证、授权、默认值和约束。
CA 证书的注册配置集位于 /var/lib/pki/instance_name/ca/conf
目录中,名称为 dc profile
。
因此,仅在部署前在 CA 安装过程中使用此方法。
编辑配置文件后重新启动服务器以使更改生效。
11.1. 配置非 CA 系统证书配置文件 复制链接链接已复制到粘贴板!
11.1.1. 配置集配置参数 复制链接链接已复制到粘贴板!
配置集规则的所有参数 - 默认值、输入、输出和约束 - 在单个策略集中配置。为配置集设置的策略具有名称 policyset.policyName.policyNumber
。例如:
policyset.cmcUserCertSet.6.constraint.class_id=noConstraintImpl policyset.cmcUserCertSet.6.constraint.name=No Constraint policyset.cmcUserCertSet.6.default.class_id=userExtensionDefaultImpl policyset.cmcUserCertSet.6.default.name=User Supplied Key Default policyset.cmcUserCertSet.6.default.params.userExtOID=2.5.29.15
policyset.cmcUserCertSet.6.constraint.class_id=noConstraintImpl
policyset.cmcUserCertSet.6.constraint.name=No Constraint
policyset.cmcUserCertSet.6.default.class_id=userExtensionDefaultImpl
policyset.cmcUserCertSet.6.default.name=User Supplied Key Default
policyset.cmcUserCertSet.6.default.params.userExtOID=2.5.29.15
常见配置集配置参数在 表 11.1 “配置文件参数” 中进行了描述。
参数 | 描述 |
---|---|
desc | 提供证书配置文件的自由文本描述,显示在终端实体页面上。例如,desc=This certificate profile 用于通过代理身份验证注册服务器证书。 |
enable | 设置是否启用配置集,因此可以通过终端实体页面访问。例如:enable=true。 |
auth.instance_id |
设置用来验证通过配置集提交的证书请求的身份验证管理器插件。要进行自动注册,如果身份验证成功,CA 会立即发布证书。如果身份验证失败或者没有指定身份验证插件,则会将请求排队,以便代理手动批准。例如,auth.instance_id=CMCAuth。身份验证方法必须是来自 |
authz.acl | 指定授权约束。大多数情况下,我们用于设置组评估 ACL。例如,这个 caCMCUserCert 参数要求 CMC 请求的签名者属于证书管理器代理组: authz.acl=group="Certificate Manager Agents" 在基于目录的用户证书续订中,此选项用于确保原始请求者和当前验证的用户是同一个。
在评估授权前,实体必须验证(绑定或登录到系统)。指定的授权方法必须是 |
name | 提供配置集的名称。例如,name=Agent-Authenticated Server Certificate Enrollment。此名称显示在最终用户注册或续订页面中。 |
input.list | 按名称列出配置集允许的输入。例如,input.list=i1,i2。 |
input.input_id.class_id | 通过输入 ID (在 input.list中列出的输入名称)提供输入的 java 类名称。For example, input.i1.class_id=cmcCertReqInputImpl. |
output.list | 按名称列出配置文件的可能输出格式。例如 output.list=o1。 |
output.output_id.class_id | 为在 output.list 中命名的输出格式提供 java 类名称。例如: output.o1.class_id=certOutputImpl。 |
policyset.list | 列出配置的配置集规则。对于双证书,一组规则适用于签名密钥,另一组规则适用于加密密钥。单个证书仅使用一组配置文件规则。例如,policyset.list=serverCertSet。 |
policyset.policyset_id.list | 根据策略 ID 号,按评估的顺序,列出为配置集配置的策略集合中的策略。例如: policyset.serverCertSet.list=1,2,3,4,5,6,7,8。 |
policyset._policyset_id.policy_number._constraint.class_id | 为配置文件规则中配置的默认约束插件集指定 java 类名称。For example, policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl. |
policyset._policyset_id.policy_number._constraint.name | 提供用户定义的约束名称。例如,policyset.serverCertSet.1.constraint.name=Subject Name Constraint。 |
policyset.policyset_id.policy_number._constraint.params._attribute | 为约束的允许的属性指定值。可能的属性因约束类型而异。例如,policyset.serverCertSet.1.constraint.params.pattern=CN= the。 |
policyset._policyset_id.policy_number._default.class_id | 给出配置文件规则中默认集的 java 类名称。For example, policyset.serverCertSet.1.default.class_id=userSubjectNameDefaultImpl |
policyset._policyset_id.policy_number._default.name | 给出用户定义的默认值的名称。例如,policyset.serverCertSet.1.default.name=Subject Name Default |
policyset.policyset_id.policy_number._default.params._attribute | 为默认值的允许的属性指定值。可能的属性因默认类型而异。例如,policyset.serverCertSet.1.default.params.name=CN=(Name)$request.requestor_name$。 |
11.1.2. 在文件系统中直接修改证书扩展 复制链接链接已复制到粘贴板!
更改约束会更改可以提供的信息类型的限制。更改默认值和约束也可以添加、删除或修改证书请求接受或所需的扩展。
例如,默认的 caFullCMCUserCert 配置集设置为从请求中的信息创建一个密钥使用扩展。
默认会被更新,以允许用户提供的密钥扩展:
policyset.cmcUserCertSet.6.default.class_id=userExtensionDefaultImpl policyset.cmcUserCertSet.6.default.name=User Supplied Key Default policyset.cmcUserCertSet.6.default.params.userExtOID=2.5.29.15
policyset.cmcUserCertSet.6.default.class_id=userExtensionDefaultImpl
policyset.cmcUserCertSet.6.default.name=User Supplied Key Default
policyset.cmcUserCertSet.6.default.params.userExtOID=2.5.29.15
这会将服务器设置为在证书请求中接受扩展 OID 2.5.29.15
。
可以类似更改其他限制和默认值。确保将任何需要的限制包含在适当的默认值中,在需要不同的约束时,默认值会被修改,且只有允许的限制用于默认值。如需更多信息,请参阅管理指南中的 B.1 默认参考参考 和 B.2 限制 参考部分(通用标准版 )。
11.1.2.1. 密钥使用和扩展密钥使用一致性 复制链接链接已复制到粘贴板!
Red Hat Certificate System 为管理员提供灵活的基础架构,供管理员创建自定义注册配置文件来满足其环境的要求。但是,重要的是配置文件不允许发布违反了 RFC 5280 中定义的要求的证书。当创建一个注册配置集,其中密钥使用(KU)和扩展的密钥用法(EKU)扩展都存在,务必要确保两个扩展之间的一致性是根据 4.2.1.12 维护的。RFC 5280 的扩展密钥用法.
有关 KU 扩展的详情,请查看:
下表提供了将一致的 Key Usage 位映射到每个目的的扩展的密钥用法位的指南:
目的/扩展的密钥用法 | 关键用法 |
---|---|
TLS 服务器身份验证命令 id-kp-serverAuth | digitalSignature, keyEncipherment, 或 KeyAgreement |
TLS 客户端(Mutual)身份验证 id-kp-clientAuth | digitalSignature, keyEncipherment, and/or KeyAgreement |
代码签名 id-kp-codeSigning | digitalSignature |
电子邮件保护 id-kp-emailProtection | digitalSignature, nonRepudiation, and/or (keyEncipherment or keyAgreement) |
OCSP 响应签名 id-kp-OCSPSigning | KeyAgreement and/ 或 nonRepudiation |
下面显示了两个不一致的 EKU/KU 示例:
用于 OCSP 响应签名的注册配置集包含扩展密钥使用
id-kp-OCSPSigning
,但使用keyEncipherment
密钥使用位:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 用于 TLS 服务器身份验证的注册配置集包含扩展密钥
使用 id-kp-serverAuth
,但使用 CRL 签名密钥使用位:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关 KU 扩展的详情,请查看:
- B.2.3 Key Usage Extension Constraint in Administration Guide (Common Standard Edition).
- 管理指南( 标准版)中的 b.3.8 keyUsage。
有关 EKU 扩展的详情,请参考:
- B.2.3 Extended Key Usage Extension Constraint in Administration Guide (Common Standard Edition).
- 管理指南(Common Standard Edition) 中的 b.3.6 extKeyUsage。
11.1.2.2. 配置跨对配置集 复制链接链接已复制到粘贴板!
跨对证书是不同的 CA 签名证书,它们建立一个信任关系,其中来自这两个不同 PKI 实体将相互信任。两种合作伙伴 CA 将其他 CA 签名证书存储在其数据库中,因此其他 PKI 中发布的所有证书均受信任和认可。
证书系统支持的两个扩展可用于建立这样的信任关系(跨认证):
-
证书策略扩展(
CertificatePoliciesExtension
)指定证书所属的术语,这通常对每个 PKI 是唯一的。 -
Policy Mapping Extension (
PolicyMappingExtension
)通过映射两个环境的证书配置文件来封装两个 PKI 之间的信任。
发布跨对证书需要证书策略扩展,需要在 管理指南(Common criteria Edition) 中 B.3.4 证书PoliciesExt anex 解释。
为确保发布的证书包含 CertificatePoliciesExtension,注册配置集需要包含适当的策略规则,例如:
本例中注册配置集发布的证书将包含以下信息:
Identifier: Certificate Policies: - 2.5.29.32 Critical: no Certificate Policies: Policy Identifier: 1.1.1.1
Identifier: Certificate Policies: - 2.5.29.32
Critical: no
Certificate Policies:
Policy Identifier: 1.1.1.1
有关使用跨对证书的更多信息,请参阅管理指南中的 使用跨证书(通用标准版本) 中的 13.4 使用跨证书。
有关发布跨对证书的更多信息,请参阅管理指南中的 7.8 发布跨证书 (通用标准版 )。
11.1.3. 在文件系统中直接添加配置集输入 复制链接链接已复制到粘贴板!
CA 配置集/ca
目录中的证书配置文件包含该特定证书配置文件的输入信息。输入是终端页面注册表单中的字段。有一个参数 input.list
,它列出了该配置集中包含的输入。其他参数定义输入;它们通过格式输入来标识 。ID
为。例如,这会为配置集添加一个通用输入:
有关哪些输入或表单字段可用的更多信息,请参阅管理指南中的 A.1 输入参考 anex (通用标准版 )。