6.6. 使用在线证书状态协议(OCSP)响应器


6.6.1. 设置 OCSP 响应程序

Red Hat Certificate System 提供两种 CRL 发布方法,供 CA 外部的 OCSP 实例使用:

  • 直接 CA→OCSP CRL 发布
  • 使用 CA→LDAP 间接发布,然后 OCSP5-4LDAP

默认情况下,当您设置 OCSP 实例后,会自动设置第一个 CRL 发布方法,这将允许直接 CA→OCSP CRL 发布。

注意

第二个发布方法是针对通用标准进行评估。有关设置示例,请参阅 规划、安装和部署指南(通用标准版) 中的 7.4.7 "Configuration for CRL 发布"。

如果您在配置 Online Certificate Status Manager 时在安全域中选择 CA,则不需要额外的步骤来配置 OCSP 服务。CA 的 CRL 发布会自动设置,其签名证书会在在线证书状态管理器的证书数据库中自动添加并可信。但是,如果您选择非安全域 CA,则必须在配置在线证书状态管理器后手动配置 OCSP 服务。

注意

并不是安全域中的每个 CA,在配置 OCSP Manager 时,OCSP Manager 会自动信任 OCSP Manager。在 CA 面板中配置的 CA 的证书链中的每个 CA 都由 OCSP Manager 自动信任。安全域中的其他 CA,但不得在证书链中手动信任。

为安全域之外的证书管理器设置在线证书状态管理器:

  1. 为将发布到 OCSP 响应器的每个 CA 配置 CRL。
  2. 启用发布、设置发布程序,并在 OCSP 服务将处理的每个 CA 中设置发布规则(第 7 章 发布证书和 CRL)。如果证书管理器发布到 LDAP 目录,并且将在线证书状态管理器设置为从该目录读取,则不需要此项。
  3. 证书配置文件必须配置为包含授权信息访问扩展,指向证书管理器侦听 OCSP 服务请求的位置(第 6.6.4 节 “启用证书管理器的内部 OCSP 服务”)。
  4. 配置 OCSP 响应器。

  5. 在配置这两个子系统后重启这两个子系统。
  6. 验证 CA 是否已正确连接到 OCSP 响应程序(第 6.6.2.1 节 “验证证书管理器和在线证书状态管理器连接”)。

6.6.2. 将 CA 识别到 OCSP Responder

在将 CA 配置为将 CRL 发布到在线证书状态管理器之前,必须通过将 CA 签名证书存储在在线证书状态管理器的内部数据库来识别 CA 的证书。证书管理器使用此证书关联的密钥对为 CRL 进行签名;在线证书状态管理器会根据存储的证书验证签名。

注意

如果在配置在线证书状态管理器时选择了安全域中的 CA,则不需要额外的步骤来配置在线证书状态管理器来识别 CA;在在线证书状态管理器的证书数据库中会自动添加 CA 并可信。但是,如果选择了非安全域 CA,则必须在配置在线证书状态管理器后手动将 CA 签名证书添加到证书数据库中。

不需要为 CA 导入证书链,它将将其 CRL 发布到在线证书状态管理器。OCSP 服务需要证书链的唯一时间是,如果 CA 在发布 CRL 时通过 SSL/TLS 身份验证连接到在线证书状态管理器。否则,在线证书状态管理器不需要完整的证书链。

但是,在线证书状态管理器必须在其证书数据库中签署 CRL (CA 签名证书或单独的 CRL 签名证书)。OCSP 服务通过将 CRL 与数据库中的证书进行比较来验证 CRL,而不与证书链。如果 root CA 和其从属 CA 之一发布 CRL 到在线证书状态管理器,则在线证书状态管理器需要两个 CA 的 CA 签名证书。

要导入 CA 或 CRL 签名证书,用来为 CA 发布的证书签名到在线证书状态管理器,请执行以下操作:

  1. 从 CA 的末尾实体页面中获取证书管理器的 base-64 CA 签名证书。
  2. 打开在线证书状态管理器代理页面。URL 的格式是 https://hostname:SSLport/ocsp/agent/ocsp
  3. 在左侧框中,单击 Add Certificate Authority
  4. 在表单中,将编码的 CA 签名证书粘贴到标有 Base 64 编码证书(包括标头和页脚) 的文本区域。
  5. 要验证证书是否已成功添加,请在左侧框中单击 List Certificate Authorities

生成的表单应该显示有关新 CA 的信息。此更新、下一步更新Requests Served Since Startup 字段应显示 0 (0)。

当证书管理器重启时,它会尝试连接到在线证书状态管理器的 SSL/TLS 端口。要验证证书管理器是否确实与在线证书状态管理器通信,请检查 更新和 下一步更新,该字段应该使用与在线证书状态管理器最新通信的适当时间戳进行更新。Requests Served Since Startup 字段应该仍然显示 0 (0)的值,因为没有客户端尝试查询 OCSP 服务以获取证书撤销状态。

6.6.2.2. 配置撤销信息存储:内部数据库

Online Certificate Status Manager 将每个证书管理器的 CRL 存储在其内部数据库中,并将其用作 CRL 存储来验证证书的撤销状态。要更改在线证书状态管理器用来在其内部数据库中存储 CRL 的配置:

  1. 打开在线证书状态管理器控制台。

    # pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
    Copy to Clipboard Toggle word wrap
    注意

    pkiconsole 已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然 pkiconsole 在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与 pkiconsole 等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。

  2. Configuration 选项卡中,选择 Online Certificate Status Manager,然后选择 Revocation Info Stores

    右侧窗格显示在线证书状态管理器可以使用的两个存储库;默认情况下,它会在其内部数据库中使用 CRL。

  3. 选择 defStore,然后单击 编辑/查看
  4. 编辑 defStore 值。

    • notFoundAsGood.如果在任何 CRL 中找不到相关的证书,则将 OCSP 服务设置为返回 GOOD 的 OCSP 响应。如果未选中此项,响应为 UNKNOWN,当客户端遇到时,会导致错误消息。
    • byName。OCSP Responder 只支持基本响应类型,其中包括 OCSP Responder 发出响应的 ID。基本响应类型中的 ResponderID 字段由 ocsp.store.defStore.byName 参数的值决定。如果 byName 参数为 true 或缺失,则 OCSP 颁发机构签名证书主题名称将用作 OCSP 响应的 ResponderID 字段。如果 byName 参数为 false,则 OCSP 颁发机构签名证书哈希将是 OCSP 响应的 ResponderID 字段。
    • includeNextUpdate.包括下一个 CRL 更新时间的时间戳。

6.6.2.3. 配置撤销信息存储:LDAP 目录

虽然 OCSP Manager 默认在其内部数据库中存储 CA CRL,但您可以将它配置为使用发布到 LDAP 目录的 CRL。

当将 OCSP 管理器配置为使用 LDAP 目录时,您需要禁用默认的直接 CA→OCSP CRL 发布方法。为此,请参阅 规划、安装和部署指南(通用标准版本) 中的 9.2.3.17 "Disabling the direct CA-OCSP CRL 发布"。

重要

默认情况下,如果启用了 ldapStore 方法,则 OCSP 用户界面不会检查证书状态。但是,OCSP 子系统可以利用频繁更新的 CRL 来验证其对等的证书,而无需访问另一个 OCSP 系统。为此,请参阅 规划、安装和部署指南(Common criteria Edition) 中的 OCSP 中使用最新的 CRL"启用客户端证书验证。

将在线证书状态管理器配置为使用 LDAP 目录:

  1. 打开在线证书状态管理器控制台。

    # pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
    Copy to Clipboard Toggle word wrap
    注意

    pkiconsole 已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然 pkiconsole 在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与 pkiconsole 等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。

  2. Configuration 选项卡中,选择 Online Certificate Status Manager,然后选择 Revocation Info Stores

    右侧窗格显示在线证书状态管理器可以使用的两个存储库;默认情况下,它会在其内部数据库中使用 CRL。

  3. 要在 LDAP 目录中使用 CRL,点 Set Default 来启用 ldapStore 选项。
  4. 选择 ldapStore,然后单击 Edit/View
  5. 设置 ldapStore 参数。

    • numConns.OCSP 服务应检查的 LDAP 目录总数。默认情况下,设置为 0。设置此值会显示相应的 主机portbaseDNrefreshInSec 字段的数量。
    • 主机.LDAP 目录的完全限定域名。
    • 端口.LDAP 目录的非 SSL/TLS 端口。
    • baseDN.开始搜索 CRL 的 DN。例如,O=example.com
    • refreshInSec.连接被刷新的频率。默认值为 86400 秒(每天)。
    • caCertAttr.保留默认值 cACertificate;binary,因为它为。它是证书管理器发布其 CA 签名证书的属性。
    • crlAttr.保留默认值 certificateRevocationList;binary,因为它为。它是证书管理器发布 CRL 的属性。
    • notFoundAsGood.如果在任何 CRL 中找不到相关的证书,则将 OCSP 服务设置为返回 GOOD 的 OCSP 响应。如果未选中此项,响应为 UNKNOWN,当客户端遇到时,会导致错误消息。
    • byName。OCSP Responder 只支持基本响应类型,其中包括 OCSP Responder 发出响应的 ID。基本响应类型中的 ResponderID 字段由 ocsp.store.defStore.byName 参数的值决定。如果 byName 参数为 true 或缺失,则 OCSP 颁发机构签名证书主题名称将用作 OCSP 响应的 ResponderID 字段。如果 byName 参数为 false,则 OCSP 颁发机构签名证书哈希将是 OCSP 响应的 ResponderID 字段。
    • includeNextUpdate.在线证书状态管理器可包含下一个 CRL 更新时间的时间戳。

6.6.2.4. 配置默认的 OCSP 响应签名算法

将在线证书状态管理器配置为使用不同的 OCSP 响应签名算法:

  1. 打开在线证书状态管理器控制台。

    # pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
    Copy to Clipboard Toggle word wrap
    注意

    pkiconsole 已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然 pkiconsole 在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与 pkiconsole 等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。

  2. Configuration 选项卡中,选择 Online Certificate Status Manager
  3. General Settings 中,从下拉列表中选择所需的签名算法。例如,带有 RSA 的 SHA384

    注意

    不再支持 SHA1 算法。

6.6.2.5. 测试 OCSP 服务设置

通过执行以下操作测试证书管理器是否可以正确服务 OCSP 请求:

  1. 在浏览器或客户端中打开撤销检查。
  2. 从为 OCSP 服务启用的 CA 请求证书。
  3. 批准请求。
  4. 将证书下载到浏览器或客户端。
  5. 确保 CA 由浏览器或客户端信任。
  6. 检查证书管理器的内部 OCSP 服务的状态。

    打开 CA 代理服务页面,然后选择 OCSP Services 链接。

  7. 测试独立的在线证书状态管理器子系统。

    打开在线证书状态管理器代理服务页面,然后单击 List Certificate Authorities 链接。

    该页面应当显示有关配置为向在线证书状态管理器发布 CRL 的证书管理器的信息。该页面还总结了自上次启动后的在线证书状态管理器的活动。

  8. 吊销证书。
  9. 在浏览器或客户端中验证证书。服务器应返回证书已被撤销。
  10. 再次检查证书管理器的 OCSP-service 状态,以验证是否已发生这些问题:

    • 浏览器向证书管理器发送 OCSP 查询。
    • 证书管理器向浏览器发送 OCSP 响应。
    • 此浏览器用于验证证书并返回其状态,导致无法验证证书。
  11. 再次检查独立的 OCSP 服务子系统,以验证是否发生这些因素:

    • 证书管理器将 CRL 发布到在线证书状态管理器。
    • 浏览器向在线证书状态管理器发送 OCSP 响应。
    • 在线证书状态管理器向浏览器发送 OCSP 响应。
    • 此浏览器用于验证证书并返回其状态,导致无法验证证书。

6.6.3. 为错误的序列号设置响应

OCSP 响应者在确定证书是否有效前检查证书的吊销状态和过期日期;默认情况下,OCSP 不会验证证书的附加信息。

notFoundAsGood 参数设置 OCSP 如何处理带有无效序列号的证书。默认启用此参数,这意味着如果证书有错误的序列号,但证书有效,但 OCSP 会为证书返回 GOOD 状态。

要使 OCSP 检查和拒绝基于错误的序列号和撤销状态的证书,请更改 notFoundAsGood 设置。在这种情况下,OCSP 状态返回带有错误序列号的证书。客户端将其解释为错误,并可相应地响应。

  1. 打开在线证书状态管理器控制台。

    # pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
    Copy to Clipboard Toggle word wrap
    注意

    pkiconsole 已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然 pkiconsole 在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与 pkiconsole 等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。

  2. Configuration 选项卡中,选择 Online Certificate Status Manager,然后选择 Revocation Info Stores

  3. 选择 defStore,然后单击 编辑/查看
  4. 编辑 notFoundAsGood 值。选择该复选框意味着 OCSP 将返回 GOOD 值,即使证书上的序列号不正确。取消选择复选框意味着 OCSP 发送值 UNKNOWN,客户端可以理解为错误。

  5. 重启 OCSP Manager。

    # pki-server restart instance-name
    Copy to Clipboard Toggle word wrap

6.6.4. 启用证书管理器的内部 OCSP 服务

证书管理器有一个内置的 OCSP 服务,该服务可供 OCSP 兼容客户端使用,来直接查询证书管理器有关证书的吊销状态。安装证书管理器时,会发出 OCSP 签名证书,并默认打开 OCSP 服务。此 OCSP 签名证书用于签署对 OCSP 服务请求的所有响应。由于内部 OCSP 服务检查存储在证书管理器的内部数据库中的证书状态,因此发布不必配置为使用此服务。

客户端可以通过证书管理器的非 SSL/TLS 最终用户端口查询 OCSP 服务。当查询证书的吊销状态时,证书管理器会为证书搜索其内部数据库,检查其状态,并响应客户端。由于证书管理器具有签发的所有证书的实时状态,因此此方法撤销检查是最准确的。

每个 CA 的内置 OCSP 服务都会在安装时打开。但是,要使用此服务,CA 需要使用授权信息访问扩展来发布证书。

  1. 进入 CA 的末尾实体页面。例如:

    https://server.example.com:8443/ca/ee/ca
    Copy to Clipboard Toggle word wrap
  2. 查找 CA 签名证书。
  3. 在证书中查找授权信息访问扩展,并记录 Location URIName 值,如 https://server.example.com:8443/ca/ocsp
  4. 更新注册配置文件以启用授权信息访问扩展,并将 Location 参数设置为证书管理器的 URI。有关编辑证书配置文件的详情,请参考 第 3.2 节 “设置证书配置文件”
  5. 重启 CA 实例。

    # pki-server restart instance-name
    Copy to Clipboard Toggle word wrap
注意

要禁用证书管理器的内部 OCSP 服务,请编辑 CA 的 CS.cfg 文件,并将 ca.ocsp 参数的值改为 false

ca.ocsp=false
Copy to Clipboard Toggle word wrap

6.6.5. 使用 OCSPClient 程序提交 OCSP 请求

OCSPClient 程序可用于执行 OCSP 请求。例如:

# OCSPClient -h server.example.com -p 8080 -d /etc/pki/pki-tomcat/alias -c "caSigningCert cert-pki-ca" --serial 2

CertID.serialNumber=2
CertStatus=Good
Copy to Clipboard Toggle word wrap

OCSPClient 命令可与以下命令行选项一起使用:

Expand
表 6.1. 可用的 OCSPClient 选项
选项描述

-D 数据库

安全数据库位置(默认:当前目录)

-H hostname

OCSP 服务器主机名(默认值:example.com)

-p port

OCSP 服务器端口号(默认为 8080)

-t path

OCSP 服务路径(默认为 /ocsp/ee/ocsp)

-c nickname

CA 证书别名(defaut: CA Signing Certificate)

-n times

提交次数(默认值:1)

--serial serial_number

要检查的证书序列号

--input input_file

包含 DER 编码的 OCSP 请求的输入文件

--output output_file

存储 DER 编码的 OCSP 响应的输出文件

-v,--verbose

在详细模式下运行

--help

显示帮助信息

6.6.6. 使用 GET 方法提交 OCSP 请求

OCSP 请求小于 255 字节,可以使用 GET 方法提交到在线证书状态管理器,如 RFC 6960 所述。通过 GET 提交 OCSP 请求:

  1. 为证书生成 OCSP 请求,即正在查询的状态。例如:

    # openssl ocsp -CAfile ca.pem -issuer issuer.pem -url https://rhcs10.example.com:22443/ocsp/ee/ocsp -serial 16836380 -reqout - | base64 | tr -d '\n'
    
    MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
    Copy to Clipboard Toggle word wrap
  2. 将 URL 粘贴到 Web 浏览器的地址栏中,以返回状态信息。浏览器必须能够处理 OCSP 请求并将响应文件下载到系统。

    https://rhcs10.example.com:22443/ocsp/ee/ocsp/MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
    Copy to Clipboard Toggle word wrap
  3. 可能的状态是 GOOD REVOKEDUNKNOWN。使用 openssl 工具解析响应:

    # openssl ocsp -respin <ocsp_response_file> -resp_text
    Copy to Clipboard Toggle word wrap

或者,使用 curl 等工具从命令行运行 OCSP,以发送请求和 openssl 来解析响应。例如:

  1. 为正在查询状态的证书生成 OCSP 请求。例如:

    # openssl ocsp -CAfile ca.pem -issuer issuer.pem -url https://rhcs10.example.com:22443/ocsp/ee/ocsp -serial 16836380 -reqout - | base64 | tr -d '\n'
    
    MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
    Copy to Clipboard Toggle word wrap
  2. 使用 curl 连接到 OCSP Manager,以发送 OCSP 请求。

    # curl --cacert cert.pem https://rhcs10.example.com:22443/ocsp/ee/ocsp/MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE= > ocspresp.der
    Copy to Clipboard Toggle word wrap
  3. 使用 openssl 工具解析响应:

    # openssl ocsp -respin ocspresp.der -resp_text
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat