什么是 OCSP 签名证书和密钥?应该由谁发行?

问题描述

什么是 OCSP 签名证书和密钥?谁应该发布它?

所以,如果我有这个:

  • 示例根证书颁发机构
  • 示例中间证书颁发机构
  • *.example.com(任何域)

我只为域证书设置了 OCSP,所以 OCSP url 是 http://ocsp.example.com

现在,我学会了使用 openssl 运行 OCSP 服务器:

openssl ocsp -host 127.0.0.5 -port 80 -rsigner "what_cert?.crt" -rkey "what_cert?.key" -CA "root_or_intermediate_which_one?.crt" -text -index certindex -ignore_err

127.0.0.5 指向 ocsp.example.com

现在在该命令中,我了解到这两个是 ocsp 签名证书和密钥:

openssl ocsp -host 127.0.0.5 -port 80 -rsigner "ocsp.crt" -rkey "ocsp.key" -CA "root_or_intermediate_which_one?.crt" -text -index certindex -ignore_err
                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                                                                should it be the ROOT or the INTERMEDIATE?

现在,下一个问题是什么是 OCSP 签名证书和密钥?谁应该发布它?

最后,这些是问题,我只为域证书设置了 OCSP,所以让我获得适当的说明:

  • -CA 选项应该是什么?应该是 ROOT 还是 INTERMEDIATE?
  • 什么是 OCSP 签名证书和密钥,应该由谁颁发? (如果你能帮助我,也请告诉我如何使用 OpenSSL 发布它)

解决方法

单个 OCSP 服务器可以为多个 CA 提供 OCSP 服务。为了区分传入请求所针对的目标 CA,OCSP 实现了一个撤销配置文件(或配置),其中 CA 名称 ID 或密钥 ID(后来是首选)用作配置文件标识符。对于每个配置文件,您都需要一份由配置文件标识符引用的同一 CA 颁发的签名证书。

在您的示例中,您有两个 CA,您可能希望为其创建 OCSP 吊销配置文件:

  • 根 CA:

openssl ocsp -host 127.0.0.5 -port 80 -rsigner "ocsp_sig_root.crt" -rkey "ocsp_sig_root.key" -CA "root.crt" -text -index certindex -ignore_err

其中 ocsp_sig_root.crt 是由根 CA 签署的 OCSP 签名证书(签名证书中的 AKI 扩展必须与 root.crt 文件中的 SKI 匹配)。 ocsp_sig_root.key 是与 ocsp_sig_root.crt 关联的键。

  • 中级 CA:

openssl ocsp -host 127.0.0.5 -port 80 -rsigner1 "ocsp_sig_subca.crt" -rkey1 "ocsp_sig_subca.key" -CA1 "subca.crt" -text -index1 certindex1 -ignore_err

其中 ocsp_sig_subca.crt 是由中间 CA 签署的 OCSP 签名证书(签名证书中的 AKI 扩展必须与 subca.crt 文件中的 SKI 匹配)。 ocsp_sig_subca.key 是与 ocsp_sig_subca.crt 关联的键。你很可能只想要这个。为根 CA 实施 OCSP 的价值很小,因为它们的证书颁发/撤销极低,而 CRL 更有效。

也就是说,OCSP 将为 OCSP 服务的每个 CA 拥有单独的签名证书。