2010-12-08 18 views
8

私は133ページ、(Viega、メシエ、およびチャンドラによって、OpenSSLのでネットワークセキュリティ)から働いている参考書は、状態:OpenSSLはCRL(証明書失効リスト)を自動的に処理しますか?

[...]アプリケーションをロードする必要がありますCRL内部検証プロセスが検証する各証明書が失効していないことを保証するためのファイル。残念ながら、OpenSSLのCRL機能はバージョン0.9.6では不完全です。 CRL情報を利用するために必要な機能は、0.9.7以降の新しいバージョンでは完全になります。 [...]

OpenSSLのドキュメントには、それに関する有用な情報がありません(驚くことはありません)。 CRLのチェックは、OpenSSLの検証プロセスの自動部分でなければならないと私には思われます。 CRLは現在自動的に処理されていますか、または書籍に記載されているすべてのゴミを調べて、証明書が取り消されていないことを面倒に検証する必要がありますか?

密接に関連する質問:SSL_CTX_set_default_verify_paths関数はCRLパスも読み込みますか?

答えて

6

SSL_CTX_set_default_verify_paths()は、CRLではなくCAパスのみをロードします。

私は、正しいプロセスであることを(私はまだ実際にそれを自分自身を実装していないが)信じている:

/* Load CRLs into the `X509_STORE` */ 

X509_STORE *x509_store = SSL_CTX_get_cert_store(ctx); 
X509_STORE_add_crl(x509_store, crl); 

/* Enable CRL checking */ 
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); 
X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); 
SSL_CTX_set1_param(ctx, param); 
X509_VERIFY_PARAM_free(param); 
+0

ありがとう、感謝します。 –

5

受け入れ答えはのlibssl v0.9.8oでかなりの仕事をしません。

X509_STORE *store = getStore(); 

// Enable CRL checking 
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); 
X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); 
X509_STORE_set1_param(store, param); 
X509_VERIFY_PARAM_free(param); 

お知らせX509_STOREかなりの使用:

http://www.openssl.org/docs/crypto/X509_VERIFY_PARAM_set_flags.html

私はこのコードを使用:コードは、2011年6月23日のように、オンラインドキュメント内のページの一番下にあることを一致しますが、パラメータを設定するにはSSL_CTXよりも優先されます。

EDIT: OpenSSLとCRLにはさらに注意すべき点が1つあります。コンテキストでCRLを有効にすると、CAがCRLを持たない証明書は拒否されます。私が知る限り、OpenSSLには、それが持つCRLにリストされているCAからの証明書にのみCRLを適用する方法はありません。

私はこの問題に遭遇し、完全に有効だった私の証明書がなぜ受け入れられなかったのか理解しようと多くの時間を無駄にしました。問題は、あるCAに対してCRLを追加したが、別のCAにはCRLを追加しなかったことです。 CRLのないCAのすべての証明書は拒否されました。 OpenSSLは、この点ですべてまたは何もありません。

関連する問題