【发布时间】:2019-04-23 19:33:18
【问题描述】:
这是来自 C/C++ 库的pkcs7_verify 签名:
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
BIO *indata, BIO *out, int flags);
它可以与 PKCS7 块 (p7) 和它要签名的部分(数据中)一起使用。
我想知道这个检查如何检测链中的一个证书是否被吊销......
据我所知,只有在与 pkcs7 块之外的另一个证书匹配时才能进行吊销检查,该证书被标记为已吊销。
我检查了函数参数,发现一个代表存储受信任证书列表的参数。
这个 arg 应该持有证书,它是 pkcs7 链中最低证书的颁发者。所以我的猜测是,如果这个证书被标记为已撤销,我们对revocation 原因的检查失败了......
但是如果链中更高的另一个证书被吊销怎么办?我如何将这条信息提供给pkcs7_verify?
或者也许还有另一种 openssl 方法来决定链中的证书是否被吊销?
更新:
我找到了另一种检查证书是否被吊销的方法。在下面的示例中,我们可以看到revoked_test.pem 通过匹配crl_chain.pem 中的列表被识别为已撤销。我怎样才能以编程方式做到这一点?
openssl verify -crl_check -CAfile crl_chain.pem revoked-test.pem
revoked-test.pem: OU = Domain Control Validated, OU = PositiveSSL, CN = xs4all.nl
error 23 at 0 depth lookup:certificate revoked
谢谢
【问题讨论】:
标签: c++ c openssl x509certificate pkcs#7