Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在openssl中正确使用OCSP_basic_verify()?_C++_Ssl_Openssl_Ocsp - Fatal编程技术网

C++ 在openssl中正确使用OCSP_basic_verify()?

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

我一直在引用创建自己的OCSP实现,并在从OCSP响应程序收到OCSP基本响应后验证它。但不知何故,每次运行迭代时,我都会不断得到错误
错误: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
电话开始接通。嗨,你知道: