如何验证OpenSSL返回的OCSP响应由签发CA以外的密钥签名?
验证OCSP响应签名密钥与CA密钥不同的方法
1. 提取OCSP响应器的证书
先把OCSP响应保存到本地文件,再从中提取出响应器的签名证书:
- 获取OCSP响应文件:
openssl ocsp -issuer 你的CA证书.pem -cert 要查询的证书.pem -url 你的OCSP服务地址 -respout ocsp_response.der - 从响应文件里提取响应器证书:
openssl ocsp -respin ocsp_response.der -resp_cert ocsp_responder_cert.pem
2. 分别提取CA和响应器的公钥
从两个证书里导出公钥,方便对比:
- 提取CA公钥:
openssl x509 -in 你的CA证书.pem -pubkey -noout -out ca_pubkey.pem - 提取响应器公钥:
openssl x509 -in ocsp_responder_cert.pem -pubkey -noout -out responder_pubkey.pem
3. 对比公钥是否不同
直接查看公钥文件内容,或者用哈希值对比更准确:
- 计算CA公钥的哈希:
sha256sum ca_pubkey.pem - 计算响应器公钥的哈希:
sha256sum responder_pubkey.pem
如果两个哈希值不一致,就说明OCSP响应的签名密钥和CA的密钥是独立的。
额外检查:确认响应器证书不是CA证书本身
直接对比两个证书的内容,确保响应器没有使用CA自身的证书:
diff 你的CA证书.pem ocsp_responder_cert.pem
如果输出存在差异,说明是不同的证书,进一步验证了签名密钥的独立性。
EJBCA配置确认要点
在EJBCA管理界面里检查OCSP响应器配置:
- 进入
OCSP Responders菜单,找到目标响应器,确认它关联的是专门的OCSP响应器证书(由CA签发,但使用单独生成的密钥对)。 - 核实该响应器证书的密钥对未与CA密钥对共用,是独立创建的。
内容的提问来源于stack exchange,提问作者Maxwell Chandler
相关产品推荐
相关产品推荐

