2012-05-09 13 views
4

私はopenssl 1.0.1に更新して以来、私のアプリケーションの失効チェック機能は壊れています。 「アプリケーション/ verfiy.c」の助けによって、私は今まで、次のやったこれ、CRLファイルのロードが変更されたことが判明しました:openssl 1.0.1でCRLパスを読み込む方法は?

X509_LOOKUP *lookup; 
const char *crl_path = "/path/to/crls" 

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); 

lookup = X509_STORE_add_lookup(ctx->cert_store, X509_LOOKUP_hash_dir()); 
if (lookup == NULL) { 
    return "CRL path initialization error: X509 lookup initialization failed."; 
} 
if(!X509_LOOKUP_add_dir(lookup, crl_path, X509_FILETYPE_PEM)) { 
    return "CRL path initialization error: path addition failed."; 
} 

X509_VERIFY_PARAM_free(param); 

は今、私は常にエラーが出るそう」証明書CRLをロードできません "。

STACK_OF(X509_CRL) *crls; 
char *crlfile = "/path/to/single/crl" 

crls = load_crls(bio_err, crlfile, FORMAT_PEM, NULL, e, "other CRLs"); 
X509_STORE_CTX_set0_crls(csc, crls); 

誰もが(CRLファイルはまだ、ルックアップルーチンを使用してロードすることができる方法を知っています:CRLファイルは、最近のコードに従うことによって一度に一つのロードされている「アプリケーション/ verify.c」でしかし

、例:X509_LOOKUP_add_dir)、一度にCRLパスの指定ですべて?

答えて

2

私はストアでCRLファイルを追加するいくつかの方法を知っています 方法1: このAPIフォームx509_vfy.hファイルを使用します。 int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); は、ここではタイプは、次の値のいずれかに

X509_FILETYPE_PEMをすることができます - PEM/B64エンコードされたCRLファイル

X509_FILETYPE_ASN1ため - DERエンコードされたCRLファイル用

方法2

手順1.ファイルをX509_CRL形式に変換する (X509.hファイルから下記のいずれかのAPIを使用する:

 //If the CRL file is DER encoded 
     X509_CRL *d2i_X509_CRL_fp(FILE *fp,X509_CRL **crl); 
     //If the CRL file is PEM encoded 
     PEM_read_X509_CRL_fp(); 

    ) 

ステップ2:CRLの

STACK_OF(X509_CRL)mCRLStackのスタックを作成します。

ステップ3:

 X509_STORE_CTX_set0_crls(lStoreCtx,mCRLStack); 
    /* or */ 
    lStoreCtx->crls = mCRLStack; 
+0

私はチェックがもはや機能しなかった理由を発見しました。私はopenssl内のハッシュ関数が変更されていると推測して、ファイルが予想されるハッシュリンクによって見つからなかったと思います。 私はCRLファイルへのリンクを更新しましたが、今はすべてが期待通りに機能します。たとえば : 'LN -s $(opensslのCRL -hash -noout -in )はとにかく 感謝を.r0' !!!! – user1384039

関連する問題