2017-04-10 49 views
1

我一直在引用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的电话。有人可以指出我可能会出错的地方吗?谢谢。

+0

您的'issuer'是根CA还是中间CA?如果是后者,你可以尝试提供整个链直到自签名/根CA ...... – Castaglia

+1

@Castaglia:问题是'OCSP_basic_verify'一直循环直到找到根CA.但由于我添加的证书只是中间证书,验证失败。一旦我添加了整个链,“OCSP_basic_verify”调用就开始了。 –

回答

0

@Castaglia提供的答案。

问题是事实上,OCSP_basic_verify一直循环直到找到根CA.但由于我添加的证书只是中间证书,验证失败。一旦我添加了整个链,OCSP_basic_verify调用开始通过

+0

嗨,你有什么想法:https://stackoverflow.com/questions/48441000/ocsp-response-verification – rotringuser