第 3 章 证书配置文件(获取证书的规则)
Red Hat Certificate System 提供了一个可自定义的框架,用于为传入证书请求应用策略,以及控制输入请求类型和输出证书类型;这些类型称为 证书配置文件。证书配置文件在证书管理器终端页面中设置证书注册表单所需的信息。本章论述了如何配置证书配置文件。
3.1. 关于证书配置文件 复制链接链接已复制到粘贴板!
证书配置文件定义与发布特定类型的证书相关的所有内容,包括身份验证方法、授权方法、默认证书内容、内容值的限制,以及证书配置文件的输入和输出的内容。注册和续订请求将提交到证书配置文件,然后遵循该证书配置文件中设置的默认值和限制。这些限制通过与证书配置文件关联的输入表单或通过其他方法提交请求。从证书配置文件请求发布的证书包含默认参数所需的内容。该限制为证书中允许的内容提供规则。
有关使用和自定义证书配置文件的详情,请参考 第 3.2 节 “设置证书配置文件”。
证书系统包含一组默认配置文件。虽然创建了默认配置集以满足大多数部署,但每个部署都可以添加自己的新证书配置文件或修改现有的配置集。
- 身份验证.在每个认证配置文件中,可以指定身份验证方法。
- 授权。在每个认证配置文件中,可以指定授权方法。
- 配置集输入。配置集输入是在请求证书时提交到 CA 的参数和值。配置集输入包括证书请求的公钥,以及证书终止实体请求的证书主题名称。
- 配置集输出。配置集输出是参数和值,用于指定向最终实体提供证书的格式。当请求成功时,配置集输出是包含 PKCS""7 证书链的 CMC 响应。
证书内容。每个证书定义内容信息,如为其分配的实体的名称(主题名称)、其签名算法及其有效期周期。证书中包含的内容在 X.509 标准中定义。使用 X509 标准的版本 3,证书也可以包含扩展。有关证书扩展的更多信息,请参阅 第 B.3 节 “标准 X.509 v3 证书扩展参考”。
有关证书配置文件的所有信息都在配置集配置文件中的配置文件
集合条目中定义。当同时请求多个证书时,可以在配置文件策略中定义多个设置条目,以满足每个证书的需求。每个策略集由多个策略规则组成,每个策略规则描述证书内容中的一个字段。策略规则可以包括以下部分:- 配置文件默认设置。这些是预定义的参数,允许的值用于证书中包含的信息。配置文件默认值包括证书的有效性周期,以及每种发布的证书类型的证书扩展。
-
配置集限制。限制设置用于发布证书的规则或策略。另外,配置集限制包括需要证书主题名称至少有一个 CN 组件的规则,将证书的有效性设置为最多 360 天,以定义续订允许的宽限期,或者要求
subjectaltname扩展始终设置为true。
3.1.1. 注册配置集 复制链接链接已复制到粘贴板!
定义输入、输出和策略集的每个配置集的参数在规划、安装和部署指南(Common standard Edition) 中的配置文件参数 中更为详细地列出。
配置集通常包含输入、策略集和输出,如以下示例中的 caUserCert 配置集所示。Example caCMCUserCert Profile
证书配置文件的第一个部分是描述。这将显示 name, long description, it is enabled, and who enabled。
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 列出了要应用的单个策略。
例如,第六个策略会根据策略中的配置自动填充证书中的 Key Usage Extension。它通过设置限制来设定默认值,并要求证书使用这些默认值:
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. 证书扩展:默认值和限制 复制链接链接已复制到粘贴板!
扩展配置额外的信息,以包含在证书或有关如何使用证书的规则中。这些扩展可以在证书请求中指定,也可以从配置集默认定义中获取,然后由约束强制。
通过添加与扩展名对应的 默认值,并在请求 中没有设置默认值时,在配置集中添加或识别证书扩展。例如,基本约束扩展会标识证书是否为 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
要允许用户提供的扩展嵌入到证书请求中,并忽略配置集中的系统定义默认值,配置集需要包含用户 Supplied Extension Default,如 第 B.1.32 节 “用户 Supplied 扩展默认” 所述。
3.1.3. 输入和输出 复制链接链接已复制到粘贴板!
输入必须提交以接收证书的设置信息。这可以是请求者信息、特定证书请求格式或机构信息。
在通用标准环境中,将所有启用的配置集中的 input.i1.class_id 参数设置为 cmcCertReqInputImpl :
input.i1.class_id=cmcCertReqInputImpl
配置集中配置的输出定义发布的证书格式。在通用标准环境中,将所有启用的配置集中的 output.o1.class_id 参数设置为 certOutputImpl :
output.o1.class_id=CertOutputImpl
在常见符合条件的证书系统环境中,用户通过 /ca/ee/ca/profileSubmitUserSignedCMCFull servlet 来访问配置文件,该配置可通过终端接口访问。