第 7 章 发布证书和 CRL
Red Hat Certificate System 包含用于证书管理器的自定义发布框架,使证书颁发机构能够向任何支持的存储库发布证书、证书撤销列表(CRL)和其他与证书相关的对象:兼容 LDAP 的目录、平面文件和在线验证机构。本章介绍了如何配置证书管理器,将证书和 CRL 发布到文件、目录和在线证书状态管理器。
有关 TMS 的本节中的特性没有在评估中测试。本节仅供参考。
配置发布的一般过程如下:
配置发布到文件、LDAP 目录或 OCSP 响应器。
根据要使用的位置,可以有一个发布者或多个发布程序。位置可以通过证书和 CRL 或范围定义来分割,如证书类型。规则通过与发布程序关联来确定要发布和发布到哪个位置。
设置规则,以确定哪些证书发布到位置。任何激活证书或 CRL 匹配的规则,因此可以通过匹配基于文件的规则并匹配基于目录的规则,将同一证书发布到一个 LDAP 目录。
可以为每个对象类型设置规则: CA 证书、CRL、用户证书和跨对证书。禁用不使用的所有规则。
- 配置 CRL。在发布前必须配置 CRL。请参阅 第 6 章 吊销证书并发出 CRL。
- 在设置发布程序、映射程序和规则后启用发布程序。启用发布后,服务器会立即开始发布。如果没有完全配置发布程序、映射程序和规则,发布者可能无法正常工作。
7.1. 关于发布
证书系统能够将证书发布到文件或 LDAP 目录,并将 CRL 发布到文件、LDAP 目录或 OCSP 响应器。
为获得更大的灵活性,特定类型的证书或 CRL 可以发布为单个格式或全部三种格式。例如,CA 证书只能发布到目录而不是文件,用户证书可以同时发布到文件和一个目录。
OCSP 响应器只提供有关 CRL 的信息;证书不会发布到 OCSP 响应程序。
可以为证书文件和 CRL 文件设置不同的发布位置,以及不同类型的证书文件或 CRL 文件的不同发布位置。
同样,可以将不同类型的证书和不同类型的 CRL 发布到目录中的不同位置。例如,来自 Cest Coast division 的用户的证书可以发布到目录的一个分支,而 East Coast C 中的用户的证书可以发布到 目录中的另一个分支。
启用发布后,每次签发、更新或撤销证书或 CRL 时,都会调用发布系统。证书或 CRL 由规则评估,以查看它是否与规则中设置的 type 和 predicate 匹配。type 指定对象是 CRL、CA 证书还是任何其他证书。predicate 为被评估的对象类型设置更多条件。例如,它可以指定用户证书,也可以指定 West Coast 用户证书。要使用 predicates,需要在发布规则的 predicate 字段中输入值,并且相应的值(虽然有不同格式的格式)需要包含在要匹配的证书或证书请求中。证书或证书请求中的值可以从证书中的信息(如证书类型)派生或派生自请求表单中的隐藏值。如果没有设置 predicate,则该类型的所有证书都将被视为匹配。例如,如果 CRL 设为类型,则所有 CRL
都与规则匹配。
匹配的每个规则都会根据该规则中指定的方法和位置发布证书或 CRL。给定证书或 CRL 不匹配规则、一个规则、多个规则或所有规则。发布系统尝试匹配每个证书,以及针对所有规则发出的 CRL。
匹配规则时,会根据与该规则关联的发布者中指定的方法和位置发布证书或 CRL。例如,如果规则与签发给用户的所有证书匹配,并且规则具有一个发布至 /etc/CS/certificates
文件中的发布程序,则证书将作为文件发布到该位置。如果另一个规则与向用户发出的所有证书匹配,并且该规则具有发布到 LDAP 属性 userCertificate;binary
属性的发布程序,则该证书将发布到用户条目中 LDAP 发布时指定的目录。
对于指定发布到文件的规则,将在证书或处理的目录中发出 CRL 时创建一个新文件。
对于指定发布到 LDAP 目录的规则,证书或 CRL 将发布到指定的属性中指定的条目。CA 使用任何后续证书或 CRL 覆盖任何发布的证书或 CRL 属性的值。简单地说,任何已发布的现有证书或 CRL 都会被下一个证书或 CRL 替代。
对于指定要发布到在线证书状态管理器的规则,会将 CRL 发布到此管理器。证书不会发布到在线证书状态管理器。
对于 LDAP 发布,需要确定用户条目的位置。Mappers 用于确定要发布到的条目。映射程序可以包含条目的准确 DN,一些变量可以关联可以从证书获取的信息以创建 DN,或者有足够的信息搜索条目中唯一属性或属性集合,以判断条目的正确 DN。
当证书被撤销时,服务器将使用发布规则从 LDAP 目录或从文件系统中查找并删除对应的证书。
当证书过期时,服务器可以从配置的目录中删除该证书。服务器不会自动执行此操作,服务器必须配置为运行适当的作业。
设置发布涉及配置发布程序、映射程序和规则。
7.1.1. Publishers
publishers 指定发布证书和 CRL 的位置。当发布到文件时,发布者指定文件系统发布目录。当发布到 LDAP 目录时,发布者在存储证书或 CRL 的目录中指定属性;映射程序用于确定条目的 DN。对于每个 DN,都会为派生该 DN 设置一个不同的公式。启用 LDAP 发布时,将指定 LDAP 目录的位置。将 CRL 发布到 OCSP 响应器时,发布者指定在线证书状态管理器的主机名和 URI。
7.1.2. Mappers
Mappers 仅在 LDAP 发布中使用。Mappers 根据证书或证书请求的信息构建条目的 DN。服务器具有证书的主题名称和证书请求的信息,并需要知道如何使用此信息为该条目创建 DN。映射器提供了一个公式,用于将可用的信息转换为 DN 或可在目录中搜索的一些唯一信息,以获取该条目的 DN。
7.1.3. 规则
文件、LDAP 和 OCSP 发布 的规则 告诉服务器是否以及如何发布证书或 CRL。规则首先通过为规则设置类型和 predicate 来定义要发布的内容、证书或 CRL 匹配特定特征。然后,规则通过与发布者相关联来指定发布方法和位置,并使用映射程序指定 LDAP 发布程序。
规则可以根据需要简单或复杂,且足够灵活以适应不同的场景。
7.1.4. 发布到文件
服务器可以将证书和 CRL 发布到平面文件,然后可以导入到任何存储库中,如关系数据库。当服务器配置为向文件发布证书和 CRL 时,发布的文件为 DER 编码的二进制 blob、base-64 编码的文本 blob,或两者。
-
对于服务器问题的每个证书,它会创建一个以 DER 编码的或 base-64 编码格式包含证书的文件。每个文件都命名为
cert-serial_number.der
或cert-serial_number.b64
。serial_number 是文件中包含的证书的序列号。例如,序列号为1234
的 DER 编码证书的文件名是cert-1234.der
。 -
每次服务器生成 CRL 时,它会创建一个带有 DER 编码或 base-64 编码格式的新 CRL 的文件。每个文件都命名为issuing
_point_name-this_update
.der 或issuing_point_name-this_update.b64
,具体取决于格式。issuing_point_name 标识发布 CRL 的 CRL 发布点,this_update 指定从文件中所含的 CRL 更新值派生的值。例如,带有此更新值的 DER 编码的 CRL 的文件名:Friday 1 月 28:36:00 PST 2023
,为MasterCRL-20230128-153600.der
。
7.1.5. OCSP 发布
有两种形式的证书系统 OCSP 服务,即证书管理器的内部服务以及在线证书状态管理器。内部服务检查证书管理器的内部数据库,以报告证书的状态。内部服务没有设置为发布;它使用存储在其内部数据库中的证书来确定证书的状态。在线证书状态管理器检查由证书管理器发送到的 CRL。为每个位置设置一个 publisher,并为每个类型的 CRL 发送一条规则。
有关两个 OCSP 服务的详情,请参考 第 6.6 节 “使用在线证书状态协议(OCSP)响应器”。
7.1.6. LDAP 发布
在 LDAP 发布 中,服务器使用 LDAP 或 LDAPS 将证书、CRL 和其他证书相关的对象发布到目录中。它发布的目录的分支被称为 发布目录。
- 对于服务器问题的每个证书,它会在用户条目的指定属性中以 DER-encoded 格式包含证书的 blob。证书作为 DER 编码的二进制 blob 发布。
- 每次服务器生成 CRL 时,它会在 CA 条目的指定属性中以 DER-encoded 格式包含新的 CRL 的 blob。
服务器可以使用 LDAP 协议或通过 SSL (LDAPS)协议将证书和 CRL 发布到兼容 LDAP 的目录,应用可以通过 HTTP 检索证书和 CRL。支持通过 HTTP 检索证书和 CRL,让一些浏览器从从服务器接收常规更新的目录中自动导入最新的 CRL。然后,浏览器可以使用 CRL 自动检查所有证书,以确保它们没有被撤销。
要使 LDAP 发布正常工作,用户条目必须存在于 LDAP 目录中。
如果出于某种原因,服务器和发布目录无法同步,则特权用户(管理员和代理)也可以手动启动发布过程。具体说明请查看 第 7.11.2 节 “手动更新目录中的 crl”。