openssl ocsp程序要求客户端将证书和CA证书发送到ocsp resopnder。但是,OCSP的RFC 2560并不要求这样做。 OCSP响应者是否应该预先配置CA证书,并且能够从客户端发送给它的证书中找到特定的CA? 谢谢你的回答
答案 0 :(得分: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 }
有两个与发行者相关的字段,issuerNameHash和issuerKeyHash。为方便起见,openssl ocsp命令获取整个颁发者证书,并使用该证书为最终请求生成这两个字段。
一般情况下,无法为单个CA证书预先配置OCSP响应程序,因为大多数CA为其“根证书”颁发多个子CA证书 - 即CA通常在其名称和问题中发布单个CA证书根此根证书下的几个子CA证书本身,例如sub 1,sub 2等。除了管理或语义含义之外,还有一个额外的好处,即其中一个子CA的密钥泄露不如根证书严重。日常业务以子CA的名义完成,而根密钥只是偶尔用于更新子CA证书,并且可以在其余时间保持尽可能安全。
由于这些子CA,OCSP响应者无法轻易区分哪个子CA发布了要检查的证书,并且需要该信息来确定需要检查哪个客户端证书撤销。
您可能会争辩说,响应者可以单独根据序列号来确定这一点 - 但这就是为什么只有发行者和序列号的组合才能唯一地识别证书:有可能是两个CA(在我们的方案子CA中)颁发具有相同序列号的证书。这就是协议要求客户也发送发行者信息的原因。