第 7 章 撤销证书和发布 CRL
CertificateCertificate Systemnbsp;System 提供了撤销证书的方法,以及生成撤销的证书列表,称为证书撤销列表(CRL)。本章论述了撤销证书的方法,描述了 CMC 撤销调用,并提供有关 CRL 和设置 CRL 的详情。
7.1. 关于撤销证书
证书可以被最终用户(证书的原始所有者)或证书管理器代理撤销。最终用户可以使用在端点页面中提供的撤销表单来撤销证书。代理可以使用代理服务接口中的适当形式来撤销最终用户证书。这两种情况下都需要使用基于证书的(SSL/TLS 客户端身份验证)。
最终用户只能撤销包含与用于身份验证的证书相同的主题名称的证书。身份验证成功后,服务器会列出属于最终用户的证书。然后,最终用户可以选择被撤销的证书,也可以撤销列表中的所有证书。最终用户还可指定其他详情,如每个证书的撤销日期和撤销原因,或针对整个列表指定列表。
代理可以基于一系列序列号或基于主题名称组件来撤销证书。提交撤销请求时,代理会收到一个证书列表,从中可以选择一个要撤销的证书。有关代理如何撤销终止证书的说明,请参阅 Red Hat 证书系统 9 规划、安装和部署指南。
撤销请求后,证书管理器会将其内部数据库中对应的证书记录标记为已撤销,如果配置为这样做,则从发布目录中删除已撤销的证书。这些更改反映在 CA 问题的下一个 CRL 中。
- 如果 CA 收到了撤销请求并批准,则撤销证书。
- 将撤销的证书状态提供给需要验证其有效状态的第三方或应用程序。
证书管理器可以被配置为生成 CRL。通过在 CRL 配置中启用特定于扩展的模块,可以创建这些 CRL 以符合 X.509 标准。服务器通过其 CRL 发出点框架支持标准 CRL 扩展 ; 有关为发出点设置 CRL 扩展的更多信息,请参阅 第 7.3.3 节 “设置 CRL 扩展”。证书管理器可以在每次证书被撤销和定期间隔时生成 CRL。如果设置了发布,则 CRL 可以发布到文件、LDAP 目录或 OCSP 响应程序。
发布 CRL 并由发布 CRL 中列出的证书的 CA 发布或由该 CA 授权的实体发布并签名以发布 CRL 的实体。CA 可使用单个密钥对为证书和 CRL 签名它,或两个单独的密钥对,一个用于签名 CRL,另一个用于签名 CRL。
默认情况下,证书管理器使用一个密钥对对它生成的证书和 CRL 进行签名。要为证书管理器创建另一个密钥对,并专门用于签名 CRL,请参阅 第 7.3.4 节 “将 CA 设置为使用其他证书来签名 CRL”。
在签发点时生成 CRL,并配置了启用了 CRL 生成的时间。
启用 CRL 后,服务器会在撤销证书时收集撤销信息。服务器会尝试将撤销的证书与设置的所有发布点匹配。给定证书无法匹配任何发布点、其中一个发布点、多个发布点或所有发布点。当被撤销的与发布点匹配的证书时,服务器会将有关证书的信息存储在发出点的缓存中。
缓存会复制到内部目录,并以为复制缓存设定的时间间隔。当达到创建 CRL 的时间间隔时,会从缓存创建一个 CRL。如果为此发布点设置了 delta CRL,此时也会创建一个 delta CRL。完整的 CRL 包含所有已撤销的证书信息,因为证书管理器开始收集这些信息。delta CRL 包含自完整 CRL 最后一次更新以来所有已撤销的证书信息。
完整的 CRL 按顺序编号,如 delta CRL。完整 CRL 和 delta CRL 可以有相同的数字;在这种情况下,delta CRL 的编号与 下一个 完整 CRL 相同。例如,如果完整的 CRL 是第一个 CRL,则代表 CRL 1。delta CRL 为 Delta CRL 2。CRL 1 和 Delta CRL 2 中的数据与下一个完整的 CRL 相同,即 CRL 2。
注意
当修改发布点的扩展时,不会使用发出该点的下一个完整 CRL 创建 delta CRL。使用创建 的第二个 完整 CRL 创建 delta CRL,然后所有后续完整 CRL。
内部数据库仅存储最新的 CRL 和 delta CRL。在创建每个新 CRL 时,旧的 CRL 将被覆盖。
当发布 CRL 时,对 CRL 和 delta CRL 每次更新都会发布到发布集合中指定的位置。发布方法决定了存储了多少个 CRL。对于文件发布,每个 CRL 使用 CRL 数量发布到文件中,因此不会覆盖任何文件。对于 LDAP 发布,发布的每个 CRL 都会替换包含目录条目中的 CRL 属性中的旧 CRL。
默认情况下,CRL 不包含关于已撤销过期证书的信息。服务器可通过为发出点启用该选项,包括撤销的过期证书。如果包含过期的证书,当证书过期时,不会从 CRL 中删除关于已撤销证书的信息。如果没有包含过期的证书,则在证书过期时从 CRL 中删除有关已撤销证书的信息。
7.1.1. 用户初始化的调用
在 SSL/TSL 客户端身份验证中,服务器需要最终用户提供与要撤销的主题名称相同的证书,并将其用于身份验证目的。服务器通过在内部数据库中为客户端身份验证的证书中的主体名称映射,来验证撤销请求的真实性。只有在证书映射到其内部数据库中的一个或多个有效或过期证书时,服务器才会撤销证书。
身份验证成功后,服务器会列出与为客户端身份验证提供的证书的主题名称相匹配的有效或过期的证书。然后用户可以选择要撤销的证书或撤销列表中所有证书。
7.1.2. 撤销证书的原因
- 0.Unspecified; 没有特定原因。
- 1.与证书关联的私钥已被破坏。
- 2.与发布证书的 CA 关联的私钥已被破坏。
- 3.证书的所有者不再与证书颁发者相关,并且没有证书获得的访问权限或不再需要它的权限。
- 4.另一个证书取代了这个证书。
- 5.发布证书的 CA 已创建要操作的 CA。
- 6.该证书正在保存等待的进一步操作。它被视为已撤销,但将来可能会发生,以便证书再次激活并有效。
- 8.该证书将从 CRL 中删除,因为它已从拥有中移除。这只适用于 delta CRL。
- 9.该证书会被撤销,因为证书所有者的权限已被撤回。
证书可以被管理员、代理和最终实体撤销。带有代理权限的代理和管理员可使用代理服务页面中的表单撤销证书。最终用户可以使用端点接口的 Revocation 选项卡中的表单来撤销证书。最终用户只能撤销自己的证书,而代理和管理员可以撤销服务器发布的任何证书。为了撤销证书,还需要最终用户对服务器进行身份验证。
每当撤销证书时,证书管理器会在其内部数据库中更新证书的状态。服务器使用内部数据库中的条目来跟踪所有已撤销的证书,并在配置后,通过向中央存储库发布 CRL,以通知列表中的其他用户不再有效。
7.1.3. CRL 签发点
由于 CRL 可能会增长非常大,因此有几种方法可以尽量减少检索和交付大型 CRL 的开销。这些方法之一会对整个证书空间进行分区,并将一个单独的 CRL 与每个分区相关联。此分区称为 CRL 发布点,即维护所有已撤销证书的子集的位置。分区可以基于被撤销的证书是 CA 证书,无论是出于特定原因被撤销,还是使用特定配置集发布的。每个发布点都由其名称来标识。
默认情况下,证书管理器生成并发布单个 CRL,即 master CRL。发行点可为所有证书生成 CRL,仅适用于 CA 签名证书,或为所有证书(包括过期的证书)生成 CRL。
定义了发布点后,它们可以包含在证书中,以便需要检查证书的撤销状态的应用程序可以访问证书中指定的 CRL 发出点,而不是 master 或主 CRL。由于在发布点上维护的 CRL 比 master CRL 小,因此检查撤销状态更快。
7.1.4. Delta CRLs
可以为任何定义的发布点发布 delta CRL。delta CRL 包含有关从最后更新到完整 CRL 后撤销的任何证书的信息。通过启用 DeltaCRLIndicator 扩展来创建发布点的 delta CRL。
7.1.5. 发布 CRL
因为 CRL 可能非常大,所以发布 CRL 可能需要很长时间,所以可能会中断进程。可以将特殊发布程序配置为通过 HTTP1.1 将 CRL 发布到文件,如果进程中断,则 CA 子系统的 Web 服务器可以在其中断时恢复发布,而不必再次开始发布。第 8.8 节 “设置恢复 CRL 下载” 中描述的。
7.1.6. 证书调用页
证书管理器的端点页面包括默认 HTML 表单,用于撤销通过 SSL/TLS 客户端验证的调用。表单可从 Revocation 标签页访问。您可以点击 User Certificate 链接来查看此类撤销的表单。
要更改表单外观来满足机构的要求,请编辑
UserRevocation.html
,它的格式允许 SSL/TSL 客户端被验证地撤销客户端或个人证书。该文件位于 /var/lib/instance_name/webapps/subsystem_type/ee/subsystem_type
目录中。