4

openssl 1.0.1 に更新したため、アプリケーションの失効チェック機能が壊れています。「apps/verfiy.c」の助けを借りて、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 を読み込めません」というエラーが表示されます。

ただし、「apps/verify.c」では、CRL ファイルは最近、次のコードによって一度に 1 つずつ読み込まれます。

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

ルックアップ ルーチン (X509_LOOKUP_add_dir など) を使用して CRL ファイルをロードし、CRL パスを指定して一度にロードする方法を知っている人はいますか?

4

1 に答える 1

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;
于 2012-05-09T09:22:08.980 に答える