第 3 章 制作发行证书规则(证书配置文件)

CertificateCertificate Systemnbsp;System 提供了一个自定义的框架,用于应用传入请求的策略,并控制输入请求类型和输出证书类型,这些框架称为 证书配置文件。证书配置集在证书管理器端点页面中设置证书注册表单所需的信息。本章论述了如何配置证书配置集。

3.1. 关于证书配置集

证书配置集定义了与发布特定类型的证书相关联的一切内容,包括身份验证方法、授权方法、默认证书内容、内容值的限制以及证书配置文件的输入和输出内容。注册和续订请求将提交到证书配置文件,然后受该证书配置集中设置的默认值和约束。这些限制通过与证书配置集关联的输入表单或通过其它方法提交请求。从证书配置文件请求发布的证书包含默认设置所需内容,以及默认参数所需的信息。约束提供了证书中允许的内容的规则。
有关使用和自定义证书配置集的详情,请参考 第 3.2 节 “设置证书配置集”
证书系统包含一组默认配置集。虽然创建了默认配置集来满足大多数部署,但每个部署都可以添加自己的新证书配置集或修改现有的配置集。
  • 身份验证.在每个认证配置集中都可以指定身份验证方法。
  • 授权.在每个认证配置集中都可以指定授权方法。
  • 配置集输入。配置集输入是请求证书时提交给 CA 的参数和值。配置集输入包括证书请求的公钥和证书实体请求的证书主题名称。
  • 配置集输出。配置集输出是参数和值,用于指定向端点提供证书的格式。当请求成功时,配置集输出为 CMC 响应,其中包含 PKCS#7 证书链。
  • 证书内容。每个证书都定义内容信息,如为其分配的实体的名称(主题名称)、签名算法及其有效周期。在 X.509 标准中定义证书中包含的内容。使用 X509 标准的版本 3,证书也可以包含扩展。有关证书扩展的详情请参考 第 B.3 节 “标准 X.509 v3 证书扩展参考”
    关于证书配置文件的所有信息都在配置集的配置文件中的 set 条目中定义。当应该同时请求多个证书时,可以在配置集策略中定义多个集合条目来满足每个证书的需求。每个策略集都包含多个策略规则,每个策略规则描述了证书内容中的一个字段。策略规则可以包括以下部分:
    • 配置集默认值。以下是证书中包含的信息的预定义参数和允许值。配置集默认值包括证书的有效性周期,以及每个发布的证书扩展显示哪些证书扩展。
    • 配置集限制。约束设置规则或策略以发布证书。另外,配置集限制包括需要证书主体名称至少包含一个 CN 组件的规则,从而将证书的有效性设置为 360 天,以定义续订允许的宽限期,或者要求 subjectaltname 扩展始终设置为 true

3.1.1. 注册配置集

定义输入、输出和策略集合的每个配置集的参数在表 11.1 中被详细列出。红帽认证系统规划、安装和部署指南中的配置文件参数.
配置集通常包含输入、策略集和输出,如 例 3.1 “caCMCUserCert Profile 示例” 中的 caUserCert 配置集所示。

例 3.1. caCMCUserCert Profile 示例

证书配置集的第一部分是描述。这会显示名称、长描述(无论是否启用)以及谁启用它。
desc=This certificate profile is for enrolling user certificates by using the CMC certificate request with CMC Signature authentication.
visible=true
enable=true
enableBy=admin
name=Signed CMC-Authenticated User Certificate Enrollment
注意
这个配置集中缺少 auth.instance_id= 条目意味着,不需要使用此配置集进行身份验证来提交注册请求。但是,经授权 CA 代理的手动批准需要经过授权后才能获得帮助。
接下来,配置集会列出配置集的所有所需输入:
input.list=i1
input.i1.class_id=cmcCertReqInputImp
对于 caCMCUserCert 配置集,这定义了证书请求类型,即 CMC。
接下来,配置集必须定义输出,即最终证书的格式。唯一可用的是 certOutputImpl,这会导致 CMC 响应在成功时返回到请求者。
output.list=o1
output.o1.class_id=certOutputImpl
最后最大的 - 配置块是配置集设置的策略。策略集列出了应用于最终证书的所有设置,如其有效期期、其续订设置以及证书可用于的操作。policyset.list 参数标识应用于某个证书的策略的块名称,policyset.userCertSet.list 列出了要应用的单个策略。
例如,根据策略中的配置,第六个策略会自动填充证书中的键使用范围。它通过设置限制来设置默认值,并要求证书使用这些默认值:
policyset.list=userCertSet
policyset.userCertSet.list=1,10,2,3,4,5,6,7,8,9
...
policyset.userCertSet.6.constraint.class_id=keyUsageExtConstraintImpl
policyset.userCertSet.6.constraint.name=Key Usage Extension Constraint
policyset.userCertSet.6.constraint.params.keyUsageCritical=true
policyset.userCertSet.6.constraint.params.keyUsageDigitalSignature=true
policyset.userCertSet.6.constraint.params.keyUsageNonRepudiation=true
policyset.userCertSet.6.constraint.params.keyUsageDataEncipherment=false
policyset.userCertSet.6.constraint.params.keyUsageKeyEncipherment=true
policyset.userCertSet.6.constraint.params.keyUsageKeyAgreement=false
policyset.userCertSet.6.constraint.params.keyUsageKeyCertSign=false
policyset.userCertSet.6.constraint.params.keyUsageCrlSign=false
policyset.userCertSet.6.constraint.params.keyUsageEncipherOnly=false
policyset.userCertSet.6.constraint.params.keyUsageDecipherOnly=false
policyset.userCertSet.6.default.class_id=keyUsageExtDefaultImpl
policyset.userCertSet.6.default.name=Key Usage Default
policyset.userCertSet.6.default.params.keyUsageCritical=true
policyset.userCertSet.6.default.params.keyUsageDigitalSignature=true
policyset.userCertSet.6.default.params.keyUsageNonRepudiation=true
policyset.userCertSet.6.default.params.keyUsageDataEncipherment=false
policyset.userCertSet.6.default.params.keyUsageKeyEncipherment=true
policyset.userCertSet.6.default.params.keyUsageKeyAgreement=false
policyset.userCertSet.6.default.params.keyUsageKeyCertSign=false
policyset.userCertSet.6.default.params.keyUsageCrlSign=false
policyset.userCertSet.6.default.params.keyUsageEncipherOnly=false
policyset.userCertSet.6.default.params.keyUsageDecipherOnly=false
...

3.1.2. 证书扩展:默认和限制

扩展配置用于包含在证书或规则中有关如何使用证书的附加信息。这些扩展可以在证书请求中指定,或者从配置集默认定义中获取,然后由限制强制实施。
如果在配置集中添加或标识了证书扩展,方法是添加与扩展名对应的默认值,并在请求中未设置证书扩展。例如: Basic Constraints Extension 标识证书是否为 CA 签名证书、可在 CA 中配置的最大下级 CA 数以及扩展是否重要(必需):
policyset.caCertSet.5.default.name=Basic Constraints Extension Default
policyset.caCertSet.5.default.params.basicConstraintsCritical=true
policyset.caCertSet.5.default.params.basicConstraintsIsCA=true
policyset.caCertSet.5.default.params.basicConstraintsPathLen=-1
扩展也可以为名为 constraints 的证书请求设置所需的值。如果请求的内容与集合约束不匹配,则请求将被拒绝。约束通常对应于扩展名默认值,但并不总是对应。例如:
policyset.caCertSet.5.constraint.class_id=basicConstraintsExtConstraintImpl
policyset.caCertSet.5.constraint.name=Basic Constraint Extension Constraint
policyset.caCertSet.5.constraint.params.basicConstraintsCritical=true
policyset.caCertSet.5.constraint.params.basicConstraintsIsCA=true
policyset.caCertSet.5.constraint.params.basicConstraintsMinPathLen=-1
policyset.caCertSet.5.constraint.params.basicConstraintsMaxPathLen=-1
注意
要允许用户在证书请求中嵌入用户提供的扩展并忽略配置集中定义的默认值,配置集需要包含 User Supplied Extension Default,如 第 B.1.32 节 “用户补充默认设置”

3.1.3. 输入和输出

输入设置信息,必须提交以接收证书。这可以是请求者信息、证书请求特定格式或机构信息。
配置集中配置的输出定义签发的证书格式。
在 CertificateCertificate Systemnbsp;System 中,通过 注册表单 (通过结束日期页面访问)访问配置文件。(即使客户端,如 TPS,通过这些表单提交注册请求。) 然后,输入对应于注册表单中的字段。输出与证书检索页面中包含的信息对应。