2017-03-12 2 views
0

여러 인증서 체인이 있으며 디렉터리에있는 여러 CRL 파일에 대해 모든 인증서 체인을 확인하려고합니다.CRL을 사용하여 인증서 체인을 확인하는 방법

이것은 시도한 샘플 코드입니다. 나는 openssl을 처음 접했고이 코드가 CRL을 가진 모든 인증서 (체인 전체)를 검증하는지 확신 할 수 없다.

X509_STORE* store = X509_STORE_new(); 
X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK_ALL); 

for each chain 
{ 
    STACK_OF(X509*) stack = sk_X509_new_null(); 
    for(int index=0; cert_chain[index] != NULL; index++) 
    { 
     if(cert_chain[index]->type == 0) 
     { 
      //EE cert 
      eecert = cert_chain[index]->cert; 
     } 
     else 
     { 
      sk_X509_push(stack, cert_chain[index]->cert); 

      //get crl matching issuer 
      X509_Name* issuer = getIssuer(cert_chain[index]->cert); 
      X509_CRL* crl = getCRL(issuer); 

      //Any best way to add multiple crls at once or add location? 
      X509_STORE_add_crl(store, crl); 
     } 
    } 

    X509_STORE_CTX *store_ctx = X509_STORE_CTX_new(); 
    X509_STORE_CTX_init(store_ctx, store, NULL, NULL);  

    X509_STORE_CTX_set_chain(ctx, stack); 
    X509_STORE_CTX_set_cert(store_ctx, eecert); 

    X509_verify_cert(store_ctx);  
} 
  1. 이 가게에 인증서 체인을 추가 할 수있는 올바른 방법이 있나요?
  2. 완전한 체인과 여러 개의 CRL 파일을로드하는 더 좋은 방법이 있습니까?
  3. 위의 코드는 체인 전체를 확인하거나 eecert 만 확인합니까?
+1

전문가도 아니지만, 전문가도 아니지만 클라이언트에게 전화를 걸면 설정에 정의 된 신뢰할 수있는 인증서 집합 [A, B]이 있다고 가정 해 보겠습니다. Z를 확인하고 C가 A 또는 B에 의해 인증서를 받았음을 알게되고 너무 ..now Z가 안전한지 그리고 전체 체인이 나중에 사용하기 위해 신뢰할 수있는 세트에 추가 될 수 있는지 확인하기 전까지 –

답변

0

많은 연구 끝에 CRL을 사용하여 인증서 체인을 확인할 수있는 간단한 클래스를 만들었습니다. 여기 내거야 blog post

관련 문제