因为我已经更新到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文件:
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路径的规范来加载CRL文件?
最佳答案 我知道一些方法可以在商店中添加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;