4

记录在http://www.openssl.org/docs/apps/ocsp.html的openssl ocsp 程序要求客户端将证书和 CA 证书发送到 ocsp 响应程序。然而,用于 OCSP 的 RFC 2560 并不要求这样做。OCSP 响应者是否应该预先配置 CA 证书,并且能够从客户端发送给它的证书中找到特定的 CA?感谢您的任何回答

4

1 回答 1

7

openssl ocsp 应用程序并没有真正将整个颁发者证书发送给响应者。如果您查看 CertID (RFC 2560) 的定义

CertID          ::=     SEQUENCE {
       hashAlgorithm       AlgorithmIdentifier,
       issuerNameHash      OCTET STRING, -- Hash of Issuer's DN
       issuerKeyHash       OCTET STRING, -- Hash of Issuers public key
       serialNumber        CertificateSerialNumber }

有两个 issuer 相关字段,issuerNameHash 和 issuerKeyHash。为了方便起见,openssl ocsp 命令获取整个颁发者证书,并使用该证书为最终请求生成这两个字段。

OCSP 响应者通常不能为单个 CA 证书预先配置,因为大多数 CA 为其“根证书”颁发多个子 CA 证书 - 即 CA 通常具有以其名称颁发的单个 CA 证书根并颁发多个子 CA此根证书下的 CA 证书本身,例如 sub 1、sub 2 等。除了管理或语义上的影响之外,这还有一个额外的好处,即对其中一个子 CA 的密钥妥协不如对根证书的严重。日常业务都是以子 CA 的名义进行的,而根密钥只是偶尔用于更新子 CA 证书,并且可以在其余时间尽可能安全地保存。

由于这些子 CA,OCSP 响应者无法轻松区分哪个子 CA 颁发了要检查的证书,并且需要该信息来确定需要检查哪个客户端证书吊销。

您可能会争辩说,响应者可以仅根据序列号来确定这一点 - 但这就是为什么只有颁发者序列号的组合才能唯一标识证书:两个 CA(在我们的场景中为子 CA)可能会使用相同的序列号。这就是协议要求客户端也发送发行者信息的原因。

于 2011-07-06T13:03:43.973 回答