3.6. 管理 CARelated 配置集
必须使用证书配置文件和扩展来设置从属 CA 如何发布证书的规则。这有两个部分:
- 管理 CA 签名证书
- 定义颁发规则
3.6.1. 在 CA 证书中设置限制
创建从属 CA 时,根 CA 可能会对从属 CA 实施限制或限制。例如,root CA 可以指定有效认证路径的最大深度(允许通过设置 CA 签名证书中基本限制扩展的子 CA 数量)。
证书链通常由实体证书、零个或多个中间 CA 证书以及 root CA 证书组成。root CA 证书是自签名的,也可以是由外部可信 CA 签名。发布后,root CA 证书作为可信 CA 加载到证书数据库中。
在执行 TLS 握手、发送 S/MIME 消息或发送已签名对象时,证书交换将发生。作为握手的一部分,发送方应该发送主题证书以及将主题证书链接到可信 root 所需的任何中间 CA 证书。要使证书链正常工作,证书应该具有以下属性:
- CA 证书必须具有基本约束扩展。
- CA 证书必须在 Key Usage 扩展中设置 keyCertSign 位。
有关证书及其扩展的更多信息,请参阅 Internet X.509 Public Key Infrastructure - Certificate and Certificate Revocation List (CRL) Profile (RFC 539) ),请参阅 RFC 5280。
这些扩展可以通过证书配置文件注册页面进行配置。默认情况下,CA 包含所需的和合理的配置设置,但可以自定义这些设置。
注意
此流程描述了编辑 CA 用来向其从属 CA 发布 CA 证书的 CA 证书配置文件。
CA 实例首次配置时使用的配置集是
/var/lib/pki/instance_name/ca/conf/caCert.profile
。在 pkiconsole 中无法编辑此配置集(因为它仅在配置实例前可用)。在使用文本编辑器配置 CA 之前,可以在模板文件中编辑此配置集的策略。
修改 CA 使用的 CA 签名证书配置集中的默认值:
- 如果当前启用了配置集,则必须禁用它,然后才能编辑它。打开 agent services 页面,从左侧导航菜单中选择 Manage Certificate Profiles,选择 profile,然后单击 Disable profile。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡的左侧导航树中,选择 证书管理器,然后选择 证书配置文件。
- 从右窗口中,选择 caCACert 或适当的 CA 签名证书配置文件,然后单击 Edit/View。
- 在 Certificate Profile Rule Editor 的 Policies 选项卡中,选择并编辑 Key Usage 或 Extended Key Usage Extension Default (如果存在)或将其添加到配置文件中。
- 选择 Key Usage 或 Extended Key Usage Extension Constraint (根据默认值)。
- 设置 CA 证书的默认值。如需更多信息,请参阅 第 B.1.13 节 “密钥使用扩展默认值” 和 第 B.1.8 节 “扩展密钥用法扩展默认值”。
- 为 CA 证书设置约束值。没有为 Key Usage 扩展设置限制;对于扩展的密钥用法扩展,请为 CA 设置适当的 OID 约束。如需更多信息,请参阅 第 B.1.8 节 “扩展密钥用法扩展默认值”。
- 当对配置文件进行更改时,再次登录到代理服务页面,然后重新启用证书配置文件。
注意
pkiconsole
已被弃用。
有关修改证书配置文件的详情,请参考 第 3.2 节 “设置证书配置文件”。
3.6.2. 在颁发证书上更改 CA 的限制
在配置了子系统后,会默认设置对发布的证书的限制。它们是:
- 证书是否可以用有效期超过 CA 签名证书发布。默认值为禁止此操作。
- 用于签署证书的签名算法。
- CA 可用于发布证书的序列号范围。
从属 CA 对有效期、证书类型以及他们可以发布的扩展类型具有限制。从属 CA 可能会发布违反这些限制的证书,但验证违反这些限制的证书的客户端将不接受该证书。在更改从属 CA 的发布规则前,检查 CA 签名证书上设置的限制。
更改证书颁发规则:
- 打开证书系统控制台。
pkiconsole https://server.example.com:8443/ca
- 选择 Configuration 选项卡左侧导航树中的 Certificate Manager 项。
图 3.1. 默认情况下,非从属 CA 中的 General Settings Tab
- 默认情况下,在非克隆的 CA 中,证书管理器 菜单项的 General Settings 选项卡包含以下选项:
- 覆盖有效期嵌套要求。此复选框设定证书管理器是否可以发布有效期超过 CA 签名证书有效期的证书。如果没有选择此复选框,并且 CA 收到有效期超过 CA 签名证书的有效性周期的请求,它会自动截断 CA 签名证书过期之日的有效周期。
- 序列号范围允许部署多个 CA,并平衡每个 CA 问题的证书数量。签发者名称和序列号的组合唯一标识证书。注意克隆的 CA 的序列号范围是 fluid。所有克隆的 CA 共享一个通用配置条目,该条目定义下一个可用范围。当一个 CA 开始在可用数量中运行时,它会检查此配置条目并声明下一个范围。条目会自动更新,以便下一个 CA 获得新范围。范围在
begin047Number
和end the the theNumber
属性中定义,为请求和证书序列号定义单独的范围。例如:dbs.beginRequestNumber=1 dbs.beginSerialNumber=1 dbs.enableSerialManagement=true dbs.endRequestNumber=9980000 dbs.endSerialNumber=ffe0000 dbs.ldap=internaldb dbs.newSchemaEntryAdded=true dbs.replicaCloneTransferNumber=5
可以为未克隆的 CA 启用序列号管理。 但是,默认情况下,序列号管理被禁用,除非自动启用系统克隆系统。无法通过控制台手动更新序列号范围。序列号范围是只读字段。 - 默认符号算法.指定证书管理器用来签署证书的签名算法。如果 CA 的签名密钥类型是 RSA,则选项为 SHA256withRSA 和 SHA512 withRSA。证书配置文件配置中指定的签名算法覆盖此处设置的算法。
- 默认情况下,在克隆的 CA 中,证书管理器 菜单项的 General Settings 选项卡包含以下选项:
- 启用序列号管理
- 启用随机证书序列号
选中这两个复选框。图 3.2. 默认情况下,克隆的 CA 中的 General Settings Tab
- 点击 Save。
注意
pkiconsole
已被弃用。
3.6.3. 使用随机证书序列号
Red Hat Certificate System 包含用于请求、证书和副本 ID 的序列号范围管理。这允许在
安装身份管理
(IdM)时自动执行克隆。
可以通过多种方式降低基于哈希的攻击的可能性:
- 对攻击者造成证书序列号的一部分无法预计
- 在身份中添加随机选择的组件
- 通过将每个转发或后向向攻击者造成有效日期无法预测
随机证书序列号分配 方法向身份添加一个随机选择的组件。这个方法:
- 可以与克隆一起工作
- 允许解决冲突
- 与当前的序列号管理方法兼容
- 与管理员、代理和结束实体的当前工作流兼容
- 修复后续序列号管理中的现有错误
备注
管理员必须启用随机证书序列号。
3.6.3.1. 启用随机证书颁发机构号
您可以从命令行或控制台 UI 启用自动序列号范围管理。
从控制台 UI 启用自动序列号管理:
- 在 General Settings 选项卡中,选择 Enable serial number management 选项。
图 3.3. 启用随机序列号分配时常规设置标签
- 选择 Enable random certificate serial number 选项。
注意
pkiconsole
已被弃用。
3.6.4. 允许 CA 证书重新续订 CA 的 Validity Period
通常,证书无法发布 CA 证书的过期日期 后 过期的时间。如果 CA 证书的过期日期为 2015 年 12 月 31 日,那么它发出的所有证书都必须由 2015 年 12 月 31 日过期。
此规则适用于 CA 发布的其他 CA 签名证书 - 这会使续订 root CA 证书几乎不可能。续订 CA 签名证书意味着它必须有有效期超过其自身的过期日期。
可以使用 CA Validity Default 更改此行为。此默认允许设置(bypassCAnotafter),它允许使用超过签发的 CA 过期(notAfter)日期的有效周期发布 CA 证书。
图 3.4. CA 验证的默认配置
在实际部署中,这意味着当可能阻止 root CA 的 CA 证书时,可以续订它。
启用 CA 证书续订过去原始 CA 的有效性日期:
- 打开
caCACert.cfg
文件。vim /var/lib/pki/instance_name/ca/conf/caCACert.cfg
- 默认情况下,应存在 CA Validity 默认。将值设为 true 以允许续订 CA 证书超过签发 CA 的有效性周期。
policyset.caCertSet.2.default.name=CA Certificate Validity Default policyset.caCertSet.2.default.params.range=2922 policyset.caCertSet.2.default.params.startTime=0
policyset.caCertSet.2.default.params.bypassCAnotafter=true
- 重启 CA 以应用更改。
当代理检查续订请求时,Extensions/Fields 区域中有一个选项,允许代理绕过正常的有效期限制。如果代理选择 false,则约束会被强制使用,即使配置集中设置了 bypassCAnotafter=true。如果没有启用 bypassCAnotafter 值,则代理选择 true,则 CA 会拒绝续订请求。
图 3.5. 在代理服务页面中绕过 CA 限制选项
注意
CA Validity Default 仅适用于 CA 签名证书续订。在 CA 有效期间,仍必须发布和更新其他证书。
CA 的单独配置设置 ca.enablePastCATime 可用于允许通过 CA 的有效周期续订证书。但是,这适用于 该 CA 发布的每个证书。由于潜在的安全问题,不建议在生产环境中使用此设置。