C++ 在openssl中正确使用OCSP_basic_verify()?
我一直在引用创建自己的OCSP实现,并在从OCSP响应程序收到OCSP基本响应后验证它。但不知何故,每次运行迭代时,我都会不断得到错误C++ 在openssl中正确使用OCSP_basic_verify()?,c++,ssl,openssl,ocsp,C++,Ssl,Openssl,Ocsp,我一直在引用创建自己的OCSP实现,并在从OCSP响应程序收到OCSP基本响应后验证它。但不知何故,每次运行迭代时,我都会不断得到错误错误:27069065:OCSP例程:OCSP_basic\u verify:certificate verify错误:OCSP_vfy.c:138:verify错误:无法获得颁发者证书。请注意,我有要验证的证书和颁发者证书的X509数据,我正在使用以下代码验证响应: OCSP_BASICRESP *br = OCSP_response_get1
错误:27069065:OCSP例程:OCSP_basic\u verify:certificate verify错误:OCSP_vfy.c:138:verify错误:无法获得颁发者证书
。请注意,我有要验证的证书和颁发者证书的X509数据,我正在使用以下代码验证响应:
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);
OCSP_BASICRESP*br=OCSP_response_get1_basic(resp);//其中resp是收到的响应。
堆栈(X509)*证书=sk_X509_new_null();
如果(!sk_X509_push(证书,发卡机构))//发卡机构X509已知
printf(“未能添加发行人”);
X509_STORE*STORE=X509_STORE_new();
X509_查找*查找;
lookup=X509_STORE_add_lookup(STORE,X509_lookup_file());
lookup=X509_STORE_add_lookup(STORE,X509_lookup_hash_dir());
X509商店添加证书(商店、发卡机构);
ret_val=OCSP_basic_verify(br,certs,store,0);
如果(返回值回答由@Castaglia提供
问题实际上是OCSP_basic_verify一直循环,直到找到根CA。但由于我添加的证书只是中间证书,因此验证失败。一旦我添加了整个链,OCSP_basic_verify调用开始进行是您的颁发者
是根CA还是中间CA?如果是后者,您可以尝试将整个链提供给自签名/根CA。@Castaglia:问题是,OCSP\u basic\u verify
一直循环,直到找到根CA。但由于我添加的证书只是中间证书,因此验证失败。一旦我添加了整个链,OCSP\u basic\u verify
电话开始接通。嗨,你知道: