我一直在引用https://github.com/openssl/openssl/blob/master/apps/ocsp.c来创建我自己的OCSP实现,并且一旦我从OCSP响应者接收到它,就验证OCSP Basic响应。但不知何故,我每次运行迭代,都会收到错误error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:unable to get issuer certificate
。请注意,我都被验证的证书和发行者证书的X509的数据,我使用下面的代码来验证响应:在openssl中正确使用OCSP_basic_verify()?
OCSP_BASICRESP *br = OCSP_response_get1_basic(resp); // where resp is the response received.
STACK_OF(X509)* certs = sk_X509_new_null();
if (!sk_X509_push(certs, issuer)) // issuer X509 known
printf("Failed to add issuer");
X509_STORE* store = X509_STORE_new();
X509_LOOKUP *lookup;
lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir());
X509_STORE_add_cert(store,issuer);
ret_val = OCSP_basic_verify(br, certs, store, 0);
if (ret_val <= 0) {
printf("Response Verify Failure: %d", ret_val);
对于上面的代码中,我不断收到ret_val
为0,上面提到的错误正在被记录。但是,我收到了OCSP响应者的正确答复,证书状态良好。剩下的事情是修复OCSP_basic_verify
的电话。有人可以指出我可能会出错的地方吗?谢谢。
您的'issuer'是根CA还是中间CA?如果是后者,你可以尝试提供整个链直到自签名/根CA ...... – Castaglia
@Castaglia:问题是'OCSP_basic_verify'一直循环直到找到根CA.但由于我添加的证书只是中间证书,验证失败。一旦我添加了整个链,“OCSP_basic_verify”调用就开始了。 –