2017-03-12 23 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. 上記のコードはチェーン全体を確認しているのか、
+1

私は専門家でもありませんが、あなたはクライアントに電話をかけたときにあなたの設定で定義された信頼できる証明書のセット[A、B]を持っていて、 CがAかBで証明されていることがわかるまで、Zを検証してください。あまりにも多くのZが安全で、チェーン全体を信頼できるセットに追加して後で使用できるようにする –

答えて

0

多くの研究の後、私は証明書チェーンをCRLで検証できる簡単なクラスを考え出しました。 ここにありますblog post

関連する問題