第 6 章 吊销证书并发出 CRL
证书系统提供撤销证书和生成吊销证书列表的方法,称为证书撤销列表(CRL)。本章论述了撤销证书的方法,描述了 CMC 撤销,并提供有关 CRL 和设置 CRL 的详细信息。
6.1. 关于撤销证书
使用公钥证书的服务器和客户端应用程序作为 ID 令牌需要访问证书的有效性的信息。因为决定证书的有效性的其中一个因素是其撤销状态,因此这些应用程序需要知道被撤销的证书。CA 负责执行以下操作:
- 如果 CA 收到撤销请求并批准,则撤销证书。
- 使已撤销的证书状态可供需要验证其有效状态的方或应用程序使用。
证书可以由最终用户(证书的原始所有者)或证书管理器代理撤销。最终用户可以撤销仅包含与提供的证书相同的主题名称的证书。
每当撤销请求被批准时,证书管理器会在其内部数据库中自动更新证书状态:它会将证书的副本标记为撤销,如果配置为这样做,则从发布目录中删除撤销的证书。这些更改反映在 CA 发布的下一个 CRL 中。
6.1.1. 证书撤销列表(CRL)
使用证书撤销状态的标准方法之一是发布已撤销证书的列表,称为证书撤销列表(CRL)。CRL 是已撤销的证书公开可用列表。
证书管理器可以被配置为生成 CRL。通过在 CRL 配置中启用特定于扩展的模块,可以创建这些 CRL 以符合 X.509 标准。服务器通过其 CRL 发布点框架支持标准 CRL 扩展 ; 有关设置 CRL 扩展以发出点的更多信息,请参阅 第 6.3.3 节 “设置 CRL 扩展”。每次吊销证书时,证书管理器可以生成 CRL,并在定期的间隔中生成 CRL。如果设置了发布,则 CRL 可以发布到文件、LDAP 目录或 OCSP 响应器。
CRL 由 CA 发布并数字签名,由发布 CRL 中列出的证书或由该 CA 授权的实体发布 CRL。CA 可以使用单个密钥对为证书和 CRL 进行签名或两个单独的密钥对,一个用于签名证书,另一个用于签名 CRL。
默认情况下,证书管理器使用单个密钥对为其发出的证书签名,及其生成的 CRL。要为证书管理器创建另一个密钥对,并将其专门用于签名 CRL,请参阅 第 6.3.4 节 “将 CA 设置为使用不同的证书为 CRL 进行签名”。
在定义并配置发布点时,会生成 CRL,并在启用 CRL 生成时生成。
启用 CRL 后,服务器会在撤销证书时收集撤销信息。服务器尝试将撤销的证书与设置的所有发出点匹配。给定证书都不能匹配所有的发行点、其中一个问题点、多个问题点或所有发出点。当被撤销的证书与一个发布点匹配时,服务器会将证书的相关信息存储在该发行点的缓存中。
缓存会在为复制缓存设定的时间间隔复制到内部目录中。当达到创建 CRL 的时间间隔时,会从缓存创建一个 CRL。如果为此发布点设置了 delta CRL,此时也会创建一个 delta CRL。完整的 CRL 包含所有撤销的证书信息,因为证书管理器开始收集此信息。delta CRL 包含自上次更新完整 CRL 起的所有吊销证书信息。
完整的 CRL 按顺序编号,因为 delta CRLs。完整的 CRL 和 delta CRL 可以具有相同的数字;在这种情况下,delta CRL 与 下一个 完整的 CRL 相同。例如,如果完整的 CRL 是第一个 CRL,则它是 CRL 1。delta CRL 为 Delta CRL 2。CRL 1 和 Delta CRL 2 中的数据组合等同于下一个完整的 CRL,即 CRL 2。
当对发出点的扩展进行更改时,不会为该发出点创建下一个完整的 CRL。使用创建 的第二个 完整 CRL 创建 delta CRL,然后所有后续的完整 CRL。
内部数据库仅存储最新的 CRL 和 delta CRL。当每个新的 CRL 被创建时,旧的 CRL 会被覆盖。
当发布 CRL 时,对 CRL 和 delta CRL 的每个更新都会发布到发布集中指定的位置。发布的方法决定了存储了多少 CRL。对于文件发布,使用 CRL 的数字发布到文件的每个 CRL,因此不会覆盖任何文件。对于 LDAP 发布,发布的每个 CRL 都会替换在目录条目中包含 CRL 的属性中的旧 CRL。
默认情况下,CRL 不包含有关撤销过期的证书的信息。服务器可以通过为发出点启用该选项来撤销过期的证书。如果包含过期的证书,则证书过期时不会从 CRL 中删除有关吊销证书的信息。如果没有包含过期的证书,当证书过期时,关于吊销证书的信息将从 CRL 中删除。
6.1.2. 用户发起的撤销
当最终用户提交证书撤销请求时,撤销过程中的第一步是证书管理器来识别和验证最终用户,以验证用户是否正在尝试撤销自己的证书,而不是属于其他人的证书。
在 SSL/TLS 客户端身份验证中,服务器预期最终用户提供与要撤销的主体名称相同的证书,并使用该证书进行身份验证。服务器通过映射提供给其内部数据库中客户端身份验证的证书中的主题名称来验证撤销请求的真实性。只有在证书成功映射到其内部数据库中的一个或多个有效或过期的证书时,服务器才会撤销证书。
身份验证成功后,服务器列出了与为客户端身份验证提供的证书主题名称匹配的有效或过期的证书。然后,用户可以选择要撤销的证书或撤销列表中的所有证书。
6.1.3. 吊销证书的原因
证书管理器可以撤销它已发布的任何证书。通常,撤销通常包含在 CRL 中的证书的原因代码,如下所示:
- 
								0.未指定;不提供任何特定原因。
- 
								1.与证书关联的私钥已被破坏。
- 
								2.与签发证书的 CA 关联的私钥已被破坏。
- 
								3.证书的所有者不再与证书的签发者关联,并且不再具有证书获得的访问权限,或者不再需要它。
- 
								4.另一个证书会替换这个证书。
- 
								5.签发证书的 CA 已投入操作。
- 
								6.证书正在等待进一步操作。它被视为已撤销,但可能在以后保留,以便证书处于活动状态且再次有效。
- 
								8.证书将从 CRL 中删除,因为它已从 hold 中删除。这只在 delta CRL 中发生。
- 
								9.证书被撤销,因为证书所有者的权限已经撤回。
6.1.4. CRL 发布点
由于 CRL 可能会增长非常大,因此有多种方法可以最大程度降低检索和交付大型 CRL 的开销。这些方法之一对整个证书空间进行分区,并将单独的 CRL 与每个分区相关联。此分区称为 CRL 发布点,即维护所有已撤销证书的子集的位置。分区可以基于撤销的证书是否为 CA 证书,无论是出于特定原因吊销,还是使用特定配置文件发布。每个发布点都由其名称标识。
默认情况下,证书管理器会生成并发布单个 CRL,即 master CRL。签发点可以为所有证书生成 CRL,仅用于 CA 签名证书,或针对包括过期证书在内的所有证书。
在定义了发行点后,它们可以包含在证书中,以便需要检查证书的撤销状态的应用程序可以访问证书中指定的 CRL 发布点,而不是主 CRL。由于在发布点上维护的 CRL 小于 master CRL,因此检查撤销状态的速度要快。
6.1.5. delta CRLs
						可以为任何定义的发行点发布 delta CRL。delta CRL 包含有关自上次更新到完整 CRL 起撤销的任何证书的信息。通过启用 DeltaCRLIndicator 扩展来创建发布点的 delta CRL。
					
6.1.6. 发布 CRL
证书管理器可以将 CRL 发布到文件、LDAP 兼容目录或 OCSP 响应程序。证书管理器中配置了发布 CRL 的频率,如 第 7 章 发布证书和 CRL 所述。
由于 CRL 可能非常大,发布 CRL 可能需要很长时间,且可能会有进程中断。可以将特殊发布程序配置为通过 HTTP1.1 将 CRL 发布到文件,如果进程中断,则 CA 子系统的 Web 服务器可以在中断时恢复发布,而不必再次开始。这在 第 7.7 节 “设置可恢复的 CRL 下载” 中进行了描述。
6.1.7. 证书撤销页面
Certificate Manager 的最终信息页面包括用于撤销通过 SSL/TLS 客户端验证的默认 HTML 表单。表单可从 Revocation 选项卡中访问。您可以点击 User Certificate 链接来查看此类撤销的表单。
						要更改表单外观以适应机构的要求,请编辑 UserRevocation.html,这是允许验证的客户端或个人证书的 SSL/TLS 客户端撤销的形式。该文件位于 /var/lib/instance_name/webapps/subsystem_type/ee/subsystem_type 目录中。