2017-04-10 8 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); 

를, I는 0과 같은 ret_val가 계속 위에서 언급 한 오류가 기록됩니다. 그러나 OCSP 응답자로부터 올바른 응답을 얻고 있으며 인증서 상태가 양호합니다. 남은 건 OCSP_basic_verify로 전화를 걸면됩니다. 누군가 내가 잘못 가고있을 수 있음을 지적 할 수 있습니까? 감사.

+0

발급자가 루트 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