【问题标题】:why does openssl send the CA certificate in OCSP protocol为什么openssl在OCSP协议中发送CA证书
【发布时间】:2011-09-29 11:32:40
【问题描述】:

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

【问题讨论】:

    标签: openssl ocsp


    【解决方案1】:

    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 证书,例如子 1、子 2 等等。除了管理或语义上的影响之外,这还有一个额外的好处,即对其中一个子 CA 的密钥妥协不如对根证书的严重。日常业务都是以子 CA 的名义进行的,而根密钥只是偶尔用于更新子 CA 证书,并在其余时间尽可能保持安全。

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

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

    【讨论】:

    • 感谢您的全面回复。在那种情况下,这种情况是否可能 a) 收到要检查其吊销状态的证书 b) 从该证书确定颁发者证书 c) 将颁发者证书提供给 openssl ocsp 程序。问题出在步骤 (b) 中,因为我不知道如何从证书中获取颁发者证书,而且我显然不想从客户端获取颁发者证书。感谢您的任何回答
    • 您希望能够手动或以编程方式执行 a) - c) 吗?如果以编程方式,使用什么语言?
    猜你喜欢
    • 2012-04-10
    • 2013-11-30
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2016-07-26
    • 2013-03-25
    相关资源
    最近更新 更多