2017-04-10 61 views
1

私はOCSPレスポンダから自分自身のOCSP実装を作成し、OCSP基本応答を確認するためにhttps://github.com/openssl/openssl/blob/master/apps/ocsp.cを参照しています。しかし、どういうわけか、私が実行する各反復、私はエラー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); 

を、私は0としてret_valを得続けます上記のエラーが記録されています。しかし、私はOCSPレスポンダから正しい応答を得ており、証明書ステータスは良好です。残っているものだけがOCSP_basic_verifyにコールを固定しています。誰かが私が間違っているかもしれない箇所を指摘できますか?ありがとう。

+0

が発行者になります。後者の場合は、自己署名/ルート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

関連する問題