第 15 章 配置证书配置文件


作为 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 安装过程中使用此方法。

编辑配置文件后重新启动服务器,以使更改生效。

15.1. 配置非 CA 系统证书配置文件

15.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
Copy to Clipboard Toggle word wrap

常见配置集配置参数在 表 15.1 “配置文件参数” 中进行了描述。

Expand
表 15.1. 配置文件参数
参数描述

desc

提供证书配置文件的自由文本描述,该配置文件显示在终端实体页面中。例如,desc=This certificate profile 用于使用代理身份验证注册服务器证书。

enable

设置配置集是否已启用,因此可通过终端实体页面访问。例如:enable=true

auth.instance_id

设置身份验证管理器插件,用来验证通过配置集提交的证书请求。要进行自动注册,如果身份验证成功,CA 会立即发布证书。如果身份验证失败或者没有指定身份验证插件,则会将请求排队,来由代理手动批准。例如,auth.instance_id=CMCAuth。身份验证方法必须是来自 CS.cfg 的注册验证实例之一。

authz.acl

指定授权约束。大多数情况下,我们用来设置组评估 ACL。例如,此 caCMCUserCert 参数要求 CMC 请求的签名者属于证书管理器代理组:

authz.acl=group="Certificate Manager Agents"

在基于目录的用户证书续订中,此选项用于确保原始请求者和当前验证的用户是同一个。

在评估授权前,实体必须验证(绑定或登录到系统)。指定的授权方法必须是 CS.cfg 中注册的授权实例之一。

name

指定配置集的名称。例如,name=Agent-Authenticated Server Certificate Enrollment。此名称显示在最终用户注册或续订页面中。

input.list

按名称列出配置集允许的输入。例如,input.list=i1,i2

input.input_id.class_id

按输入 ID (在 input.list中列出的输入名称)提供输入的 java 类名称。例如: 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 类名称。例如,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=adtrust

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$

15.1.2. 在文件系统中直接修改证书扩展

更改限制会更改可以提供的信息类型的限制。更改 defaults 和 constraints 也可以添加、删除或修改证书请求接受或所需的扩展。

例如,默认的 caFullCMCUserCert 配置集被设置为从请求中的信息创建 Key Usage 扩展。

 policyset.cmcUserCertSet.6.constraint.class_id=keyUsageExtConstraintImpl
policyset.cmcUserCertSet.6.constraint.name=Key Usage Extension Constraint
policyset.cmcUserCertSet.6.constraint.params.keyUsageCritical=true
policyset.cmcUserCertSet.6.constraint.params.keyUsageCrlSign=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageDataEncipherment=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageDecipherOnly=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageDigitalSignature=true
policyset.cmcUserCertSet.6.constraint.params.keyUsageEncipherOnly=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageKeyAgreement=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageKeyCertSign=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageKeyEncipherment=true
policyset.cmcUserCertSet.6.constraint.params.keyUsageNonRepudiation=true
policyset.cmcUserCertSet.6.default.class_id=keyUsageExtDefaultImpl
policyset.cmcUserCertSet.6.default.name=Key Usage Default
policyset.cmcUserCertSet.6.default.params.keyUsageCritical=true
policyset.cmcUserCertSet.6.default.params.keyUsageCrlSign=false
policyset.cmcUserCertSet.6.default.params.keyUsageDataEncipherment=false
policyset.cmcUserCertSet.6.default.params.keyUsageDecipherOnly=false
policyset.cmcUserCertSet.6.default.params.keyUsageDigitalSignature=true
policyset.cmcUserCertSet.6.default.params.keyUsageEncipherOnly=false
policyset.cmcUserCertSet.6.default.params.keyUsageKeyAgreement=false
policyset.cmcUserCertSet.6.default.params.keyUsageKeyCertSign=false
policyset.cmcUserCertSet.6.default.params.keyUsageKeyEncipherment=true
policyset.cmcUserCertSet.6.default.params.keyUsageNonRepudiation=true
Copy to Clipboard Toggle word wrap

默认被更新为允许用户提供的密钥扩展:

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
Copy to Clipboard Toggle word wrap

这会将服务器设置为在证书请求中接受扩展 OID 2.5.29.15

其他限制和默认值可类似更改。确保包含适当默认值所需的限制,在需要不同约束时更改了默认值,并且默认只使用允许的约束。如需更多信息,请参阅 Red Hat Certificate System Administration Guide 中的 Defaults Reference 部分和约束 参考部分。

15.1.2.1. 密钥使用和扩展密钥使用一致性

Red Hat Certificate System 为管理员提供了一个灵活的基础架构,可创建自定义注册配置文件来满足其环境的要求。但是,配置集不允许发布违反 RFC 5280 中定义的要求的证书。当创建密钥用法(KU)和扩展的密钥使用情况(EKU)扩展时,务必要确保根据 4.2.1.12 保持两个扩展之间的一致性。RFC 5280 的扩展密钥使用.

有关 KU 扩展的详情,请参考:

下表提供了将一致的密钥使用位映射到扩展的密钥用法扩展指南:

Expand
用途/扩展的密钥用法密钥用法

TLS 服务器身份验证命令

id-kp-serverAuth

digitalSignature、KeyEnciphermentKeyAgreement

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 密钥使用位:

    policyset.ocspCertSet.6.default.class_id=keyUsageExtDefaultImpl
    policyset.ocspCertSet..6.default.name=Key Usage Default
    policyset.ocspCertSet..6.default.params.keyUsageCritical=true
    policyset.ocspCertSet..6.default.params.keyUsageCrlSign=false
    policyset.ocspCertSet..6.default.params.keyUsageDataEncipherment=false
    policyset.ocspCertSet..6.default.params.keyUsageDecipherOnly=false
    policyset.ocspCertSet..6.default.params.keyUsageDigitalSignature=true
    policyset.ocspCertSet..6.default.params.keyUsageEncipherOnly=false
    policyset.ocspCertSet..6.default.params.keyUsageKeyAgreement=false
    policyset.ocspCertSet..6.default.params.keyUsageKeyCertSign=false
    policyset.ocspCertSet..6.default.params.keyUsageKeyEncipherment=true
    policyset.ocspCertSet..6.default.params.keyUsageNonRepudiation=true
    policyset.ocspCertSet.7.constraint.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.9
    policyset.ocspCertSet.7.default.class_id=extendedKeyUsageExtDefaultImpl
    policyset.ocspCertSet.7.default.name=Extended Key Usage Default
    policyset.ocspCertSet.7.default.params.exKeyUsageCritical=false
    policyset.ocspCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.9
    Copy to Clipboard Toggle word wrap
  • 用于 TLS 服务器身份验证的注册配置集包含扩展密钥 使用 id-kp-serverAuth,但使用 CRL 签名密钥使用位:

    policyset.serverCertSet.6.default.name=Key Usage Default
    policyset.serverCertSet.6.default.params.keyUsageCritical=true
    policyset.serverCertSet.6.default.params.keyUsageDigitalSignature=true
    policyset.serverCertSet.6.default.params.keyUsageNonRepudiation=false
    policyset.serverCertSet.6.default.params.keyUsageDataEncipherment=true
    policyset.serverCertSet.6.default.params.keyUsageKeyEncipherment=false
    policyset.serverCertSet.6.default.params.keyUsageKeyAgreement=true
    policyset.serverCertSet.6.default.params.keyUsageKeyCertSign=false
    policyset.serverCertSet.6.default.params.keyUsageCrlSign=true
    policyset.serverCertSet.6.default.params.keyUsageEncipherOnly=false
    policyset.serverCertSet.6.default.params.keyUsageDecipherOnly=false
    policyset.cmcUserCertSet.7.default.class_id=extendedKeyUsageExtDefaultImpl
    policyset.cmcUserCertSet.7.default.name=Extended Key Usage Extension Default
    policyset.cmcUserCertSet.7.default.params.exKeyUsageCritical=false
    policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.1
    Copy to Clipboard Toggle word wrap
  • Red Hat Certificate System Administration Guide 中的 Extended Key Usage Extension Constraint 部分。
  • Red Hat Certificate System Administration Guide 中的 keyUsage 部分。

有关 EKU 扩展的详情,请参考:

15.1.2.2. 配置跨对配置集

跨对证书是不同的 CA 签名证书,它们建立一个信任关系,其中来自这两个不同 PKI 的实体将相互信任。两个合作伙伴 CA 将其他 CA 签名证书存储在其数据库中,因此其他 PKI 中发布的所有证书都不被信任并识别。

证书系统支持的两个扩展可用于建立这样的信任关系(跨认证):

  • 证书策略扩展(CertificatePoliciesExtension)指定证书所属的术语,这通常对每个 PKI 是唯一的。
  • Policy Mapping Extension (PolicyMappingExtension)通过映射两个环境的证书配置文件来封装两个 PKI 之间的信任。

发布跨对证书需要证书策略扩展,在 Red Hat Certificate System Administration Guide 中的 certificatePoliciesExt anex 所述。

为确保发布的证书包含 CertificatePoliciesExtension,注册配置集需要包含适当的策略规则,例如:

policyset.userCertSet.p7.constraint.class_id=noConstraintImpl
policyset.userCertSet.p7.constraint.name=No Constraint
policyset.userCertSet.p7.default.class_id=certificatePoliciesExtDefaultImpl
policyset.userCertSet.p7.default.name=Certificate Policies Extension Default
policyset.userCertSet.p7.default.params.Critical=false
policyset.userCertSet.p7.default.params.PoliciesExt.num=1
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.enable=true
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.policyId=1.1.1.1
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.CPSURI.enable=false
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.CPSURI.value=
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.enable=false
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.explicitText.value=
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.noticeReference.noticeNumbers=
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.noticeReference.organization=
Copy to Clipboard Toggle word wrap

本例中使用注册配置文件发布的证书将包含以下信息:

Identifier: Certificate Policies: - 2.5.29.32
Critical: no
Certificate Policies:
Policy Identifier: 1.1.1.1
Copy to Clipboard Toggle word wrap

有关使用跨对证书的更多信息,请参阅 红帽认证系统 管理指南中的使用跨 证书部分

有关发布跨对证书的更多信息,请参阅 Red Hat Certificate System Administration Guide 中的 发布跨 证书部分。

15.1.3. 在文件系统中直接添加配置集输入

CA 配置集/ca 目录中的证书配置文件包含该特定证书配置文件的输入信息。输入是终端页面注册表单中的字段。有一个参数 input.list,它列出了该配置集中包含的输入。其他参数定义输入;它们通过格式输入来标识 ID 为。例如,这会在配置集中添加通用输入:

input.list=i1,i2,i3,i4
...
input.i4.class_id=genericInputImpl
input.i4.params.gi_display_name0=Name0
input.i4.params.gi_display_name1=Name1
input.i4.params.gi_display_name2=Name2
input.i4.params.gi_display_name3=Name3
input.i4.params.gi_param_enable0=true
input.i4.params.gi_param_enable1=true
input.i4.params.gi_param_enable2=true
input.i4.params.gi_param_enable3=true
input.i4.params.gi_param_name0=gname0
input.i4.params.gi_param_name1=gname1
input.i4.params.gi_param_name2=gname2
input.i4.params.gi_param_name3=gname3
input.i4.params.gi_num=4
Copy to Clipboard Toggle word wrap

有关哪些输入或表单字段可用的更多信息,请参阅 Red Hat Certificate System Administration Guide 中的 Input Reference 部分。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat