第 9 章 发布证书和 CRL
Red Hat Certificate System 为证书颁发机构包括可自定义的发布框架,使证书颁发机构能够发布证书、证书撤销列表(CRL)和其他与证书相关的对象到任何受支持的软件仓库: LDAP 兼容目录、平面文件和在线验证机构。本章解释了如何配置证书管理器,将证书和 CRL 发布到文件、到目录以及在线证书状态管理器。
配置发布的一般过程如下:
- 配置发布到文件、LDAP 目录或 OCSP 响应器。根据要使用的位置数量,可以有一个发布者或多个发布者。位置可以通过证书和 CRL 或更严格的定义(如证书类型)分割。规则决定要发布的类型以及与发布者关联的位置。
- 设置规则以确定将哪些证书发布到该位置。激活证书或 CRL 匹配的任何规则,因此同一证书可以发布到文件和 LDAP 目录,方法是匹配基于文件的规则并与基于目录的规则匹配。可以为每个对象类型设置规则:CA 证书、CRL、用户证书和跨对证书。禁用所有不使用的规则。
- 配置 CRL。在发布 CRL 之前,必须配置 CRL。请参阅 第 7 章 吊销证书并颁发 CRL。
- 在设置发布程序、映射程序和规则后启用发布。发布后,服务器会立即开始发布。如果没有完全配置发布程序、映射程序和规则,发布程序可能无法正常工作,或根本都无法正常工作。
9.1. 关于发布
证书系统能够向文件或 LDAP 目录发布证书,并将 CRL 发布到文件、LDAP 目录或 OCSP 响应器。
为获得更大的灵活性,可以发布特定类型的证书或 CRL,以单一格式或全部三种格式发布。例如,CA 证书只能发布到某个目录,不能发布到文件,用户可以将用户证书发布到文件和目录。
注意
OCSP 响应程序只提供有关 CRL 的信息;证书不会发布到 OCSP 响应程序。
可以为证书文件和 CRL 文件设置不同的发布位置,以及不同类型的证书文件或不同类型的 CRL 文件的不同发布位置。
同样,不同类型的证书和不同类型的 CRL 可以发布到目录中的不同位置。例如,来自公司 West Coast 划分的用户的证书可以在目录的一个分支中发布,而 East Coast 划分中的用户的证书可以发布到目录中的另一个分支。
启用发布后,每次发布、更新或撤销证书或 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 发布,需要确定用户条目的位置。映射程序用于决定要发布的条目。映射程序可以包含条目的确切 DN,一些变量可以关联证书获取的信息,以创建 DN,或者足够信息搜索条目中唯一属性或一组属性,以确定条目的正确 DN。
吊销证书时,服务器使用发布规则从 LDAP 目录或从文件系统中查找和移除对应的证书。
当证书过期时,服务器可以从配置的目录中删除该证书。服务器不会自动执行此操作,必须将服务器配置为运行适当的作业。详情请查看 第 13 章 设置自动化作业。
设置发布涉及配置发布程序、映射程序和规则。
9.1.1. publishers
publishers 指定发布证书和 CRL 的位置。在发布到文件时,发布者指定文件系统发布目录。在发布到 LDAP 目录时,发布者指定存储证书或 CRL 的目录的属性;映射程序用于确定条目的 DN。对于每个 DN,会为生成 DN 设置不同的公式。启用 LDAP 发布时,指定 LDAP 目录的位置。将 CRL 发布到 OCSP 响应器时,发布者指定在线证书状态管理器的主机名和 URI。
9.1.2. Mappers
映射程序 仅在 LDAP 发布中使用。映射程序根据证书或证书请求的信息为条目构建 DN。服务器包含证书的主题名称和证书请求的信息,并且需要知道如何使用此信息为该条目创建 DN。映射程序提供了一个公式,用于将可用信息转换为 DN 或目录中可以搜索的一些唯一信息,以获取条目的 DN。
9.1.3. 规则
文件、LDAP 和 OCSP 发布 的规则 告诉服务器是否发布证书或 CRL。首先,规则通过为规则设置 type 和 predicate 来定义要发布的内容、证书或 CRL 匹配特定特征。然后,规则通过与发布者关联,并使用映射器指定发布方法和位置。
规则可以像 PKI 部署的要求一样简单或复杂,并足够灵活以适应不同的场景。
9.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。根据格式,每个文件都命名为 issue_point_name- this_update
.der
或 issue_point_name- this_update.b64
。issue_point_name 标识发布 CRL 的 CRL 发布点,并且 this_update 指定从文件中包含的 CRL 的相关更新值生成的值。例如,DER 编码的 CRL 的文件名,其值为 this Update:phone 28 15:36:00 PST 2020,是MasterCRL-20200128-153600.der
。
9.1.5. OCSP 发布
证书系统 OCSP 服务有两种形式,即证书管理器和在线证书状态管理器的内部服务。内部服务检查证书管理器的内部数据库,以报告证书的状态。内部服务没有设置为发布,它使用存储在其内部数据库中的证书来确定证书的状态。在线证书状态管理器检查证书管理器发送给的 CRL。为发送 CRL 的每个位置设置发布者,并为每种版本的 CRL 发送一个规则。
有关 OCSP 服务的详情,请参考 第 7.6 节 “使用在线证书状态协议(OCSP)恢复器”。
9.1.6. LDAP 发布
- 对于服务器问题的每个证书,它会在用户条目的指定属性中以 DER 编码格式包含证书的 Blob。证书作为 DER 编码的二进制 blob 发布。
- 每次服务器生成 CRL 时,它都会在 CA 条目的指定属性中创建一个包含新 CRL 的 Blob。
服务器可以使用 LDAP 协议或 LDAP 通过 SSL (LDAPS)协议将证书和 CRL 发布到 LDAP 兼容目录,应用程序可以通过 HTTP 检索证书和 CRL。支持通过 HTTP 检索证书和 CRL 可让一些浏览器自动从服务器接收常规更新的目录导入最新的 CRL。浏览器可以使用 CRL 自动检查所有证书,以确保它们没有被撤销。
要使 LDAP 发布正常工作,用户条目必须存在于 LDAP 目录中。
如果因为某种原因,服务器和发布目录不同步,特权用户(管理员和代理)也可以手动启动发布过程。具体说明请查看 第 9.12.2 节 “在目录中手动更新 CRL”。