2016-05-08 6 views
0

私はX509_store、CRLsの管理に追加しようとしています。 私がやったこと:問題があるOpenSSL API:CRLチェックが機能しません

int x509_add_crl_to_store(X509_STORE * store, const char * crl_file){ 
STACK_OF(X509_CRL) *crls = 0; 
X509_CRL *x; 

CHK(!store, SSL_FAIL); 

if (X509_STORE_set_default_paths(store) != 1){ 
    MITM_PRINT_ERR("Error loading the system-wide CA certificates"); 
    return SSL_FAIL; 
} 

if(load_crls_from_PEM(crl_file, &crls) != 1) 
{ 
    MITM_PRINT_ERR("load_crls_from_PEM failed."); 
    return SSL_FAIL; 
} 

while((x=sk_X509_CRL_pop(crls)) != 0){ 
    if(X509_STORE_add_crl(store,x) != 1){ 
     MITM_PRINT_ERR("Failed to add CRL to store."); 
     return SSL_FAIL; 
    } 
    else{ 
     MITM_PRINT_ERR("Succedded to add CRL to store."); 
    } 
} 

/* set the flags of the store so that CRLs are consulted */ 
//X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL| X509_V_FLAG_TRUSTED_FIRST); 

return SSL_OK; } 

  • 私は最後の行有効にする場合:

    X509_STORE_set_flags(店舗、X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALLを)。

したがって、CRLチェックは機能していますが、信頼できるストアはもうチェックされません。

もちろん、これらの行を無効にすると、信頼できるCAチェックは機能しますが、CRLは機能しません。

おかげ ミカエル

+0

"信頼できるストアがもうチェックされていない"と言えば、信頼できないCAが最初にチェックされるか、証明書チェーンプロセスが完全に失敗するということですか? – Rahul

+0

私は、ルート証明書が信頼されていると認識されなくなったことを意味します(ストアにも表示されます)。検証が失敗したかどうか、または信頼できるストアがまったくチェックされていないかどうかはわかりません....なぜなら、それはopenSSLによって内部的に行われるからです。ありがとう –

答えて

0

X509_V_FLAG_CRL_CHECKと組み合わせてCRLフラグX509_V_FLAG_CRL_CHECK_ALLを可能にしながら、両方の複合効果がであるので一つは、非常に慎重であるべきではの存在すべてのCAに対応するすべての CRLをを必要信頼の連鎖でしたがって、CA証明書Verisign.pemをトラストストアに追加し、それが信頼チェーンの一部である場合、にCRL Verisign_CRL.pemを追加する必要があります。

具体的にはX509_STORE_set_default_paths(store)を使用して/etc/ssl/certsディレクトリにすべての証明書を追加しました。検証が正しく機能するようにするには、チェーンの一部であると予想されるそのディレクトリ内のすべてのCAに対応するCRLを追加する必要があります。

より良い方法は、CAのリストをCRLがあるものに絞り込んで、X509_STORE_add_cert(store, ca_cert)を使用して個別に追加することです。

関連する問題