第 8 章 发布证书和 CRL
Red Hat Certificate Systemnbsp;Hat Certificate Red Hat Certificate Systemnbsp;System 为证书管理器包含一个自定义的发布框架,使证书颁发机构能够发布证书、证书撤销列表(CRL)以及任何受支持存储库的其他证书相关的对象:LDAP 兼容目录、平面文件以及在线验证机构。本章论述了如何配置证书管理器,以将证书和 CRL 发布到文件,以及在线证书状态管理器。
配置发布的一般过程如下:
- 配置发布到文件、LDAP 目录或 OCSP 响应程序。根据所使用的位置数量,可以使用单个发布程序或多个发布者。可以通过证书和 CRL 分割位置,或者分配范围定义,如证书类型。规则通过与发布者关联,确定要发布哪些类型,并告知什么位置。
- 设置规则以确定将哪些证书发布到位置。激活证书或 CRL 匹配的任何规则,因此同一证书可以通过与基于文件的规则匹配并匹配基于目录的规则,将相同的证书发布到文件以及 LDAP 目录中。可以为每个对象类型设置规则: CA 证书、CRL、用户证书和跨对证书。禁用不使用的所有规则。
- 配置 CRL。必须配置 CRL,然后才能发布。请参阅 第 7 章 撤销证书和发布 CRL。
- 在设置发布程序、映射程序和规则后发布。启用发布后,服务器开始立即发布。如果没有完全配置发布程序、映射程序和规则,发布可能无法正常工作。
8.1. 关于发布
CertificateCertificate Systemnbsp;System 能够将证书发布到文件或 LDAP 目录,以及将 CRL 发布到文件、LDAP 目录或 OCSP 响应程序。
为了获得额外的灵活性,可以将特定类型的证书或 CRL 发布到单一格式或全部三个格式。例如,CA 证书只能发布到某个目录而不是文件,用户证书可以被发布到一个文件和目录。
注意
OCSP 响应者仅提供有关 CRL 的信息;证书不会发布到 OCSP 响应者。
可以为证书文件和 CRL 文件设置不同的发布位置,以及不同类型的证书文件或不同类型的 CRL 文件的不同发布位置。
同样,可以将不同类型的证书和不同类型的 CRL 发布到目录中的不同位置。例如,公司 West Coast 部门的用户的证书可以在目录的一个分支中发布,而 East Coast division 中的用户的证书可以发布到 目录中的另一个分支。
启用发布后,每次发布证书或 CRL 时,会调用发布系统。证书或 CRL 由规则评估,以查看它是否与规则中设置的类型和 predicate 匹配。类型指定对象是 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 目录或从文件系统中删除对应的证书。
当证书过期时,服务器可以从配置的目录中删除该证书。服务器不会自动执行此操作;服务器必须配置为运行适当的作业。详情请查看 第 12 章 设置自动化任务。
设置发布涉及配置发布程序、映射程序和规则。
8.1.1. publishers
publishers 指定发布证书和 CRL 的位置。当发布到文件时,发布者指定了文件系统发布目录。当发布到 LDAP 目录时,发布程序会指定存储证书或 CRL 的目录中的 属性;mapper 用于确定条目的 DN。对于每个 DN,为推断该 DN 设置一个不同的公式。启用 LDAP 发布时指定 LDAP 目录的位置。将 CRL 发布到 OCSP 响应程序时,发布者指定在线证书 Status Manager 的主机名和 URI。
8.1.2. 映射程序
映射程序 仅在 LDAP 发布中使用。映射程序根据证书或证书请求的信息构建条目的 DN。服务器具有证书的主题名称的信息和证书请求,并需要了解如何使用此信息为该条目创建 DN。映射器提供了一个公式,用于将信息转换为 DN 或某些可在 目录中搜索的唯一信息,以获取该条目的 DN。
8.1.3. 规则
文件、LDAP 和 OCSP 发布的规则会告知服务器是否以及如何发布证书或 CRL。通过为规则设置 type 和 predicate,规则首先定义要发布的内容、与特定特征匹配的证书或 CRL。然后,通过与发布者和 LDAP 发布程序(通过映射程序程序)关联来指定发布方法和位置。
规则可以像 PKI 部署所需一样简单或复杂,并且足够灵活,以适应不同的场景。
8.1.4. 发布到文件
服务器可以将证书和 CRL 发布到平面文件,然后将其导入到任何存储库,如关系数据库。当服务器被配置为将证书和 CRL 发布到文件时,公布的文件为 DER 编码的二进制 blob、base-64 编码的文本 blob 或两者。
- 对于每个服务器问题,它会以 DER-encoded 或 base-64 编码的格式创建一个包含证书的文件。每个文件都命名为
cert-
serial_number.der
或cert-
serial_number.b64
。serial_number 是文件中包含的证书的序列号。例如,使用序列号 1234 的 DER 编码证书的文件名是cert-1234.der
。 - 每次服务器生成 CRL 时,它会以 DER-encoded 或 base-64 编码的格式创建一个包含新 CRL 的文件。每个文件都命名为 issuing_point_name- this_update
.der
或 issuing_point_name- this_update.b64
,具体取决于格式。issued_point_name 标识发布 CRL 的 CRL 发出点,this_update 指定从文件中包含的 CRL 独立更新值派生的值。例如,DER 编码 CRL 的文件名以及值 This update: Friday 1:36:00 PST 2020,是MasterCRL-20200128-153600.der
。
8.1.5. OCSP 发布
有两种形式的 CertificateCertificate Systemnbsp;System OCSP 服务,它是证书管理器和在线证书状态管理器的内部服务。内部服务检查证书管理器的内部数据库,以报告证书的状态。内部服务未设置为发布;它使用存储在其内部数据库中的证书来确定证书的状态。Online Certificate Status Manager 检查由证书管理器发送到的 CRL。为每个发送 CRL 的每个位置设置一个发布程序,并为每个发送的 CRL 的规则设置一个规则。
有关两个 OCSP 服务的详情,请参考 第 7.6 节 “使用在线证书状态协议(OCSP)响应”。
8.1.6. LDAP 发布
- 对于每个证书,它会在用户条目的指定属性中创建一个带有证书的 DER 编码格式的 Blob。证书以 DER 编码的二进制 blob 的形式发布。
- 每次服务器生成 CRL 时,它都会创建一个 blob,它将以 CA 条目的指定属性的 DER 编码格式包含新的 CRL。
服务器可以使用 LDAP 协议或 LDAP 通过 SSL(LDAPS)协议将证书和 CRL 发布到 LDAP 兼容目录,应用可以通过 HTTP 检索证书和 CRL。支持通过 HTTP 检索证书和 CRL,一些浏览器可以从服务器接收定期更新的目录自动导入最新的 CRL。然后,浏览器可以使用 CRL 自动检查所有证书,以确保它们没有被撤销。
要使 LDAP 发布正常工作,用户条目必须位于 LDAP 目录中。
如果服务器和发布目录因某种原因而未同步,则特权用户(管理员和代理)也可以手动启动发布过程。具体说明请查看 第 8.12.2 节 “手动更新目录中的 CRL”。