gue*_*123 3 c api ssl openssl certificate
我正在尝试使用OpenSSL C API编写CertificatePathValidation测试.我目前正在测试已撤销的中间(ca-)证书.有两个测试用例:1.EndCert被撤销,2.SubCACert被撤销.我的代码部分:
FILE* fl = NULL;
int i;
for(i=0; i<crl_count; i++){
fl = fopen(pem_crl_files[i],"r");
x509 = PEM_read_X509_CRL(fl, NULL,0,NULL);
X509_STORE_add_crl(store, x509);
fclose(fl);
}
X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK);
Run Code Online (Sandbox Code Playgroud)
所以现在当我使用X509_V_FLAG_CRL_CHECK标志时,测试用例1工作正常,测试用例2失败(返回cert有效).如果我使用X509_V_FLAG_CRL_CHECK_ALL标志,则情况1和2都会失败.有谁知道我错过了什么?
此设置的行为与文档建议略有不同:
这意味着您需要设置两者X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL.
OpenSSL 1.0.1e的相关代码,文件crypto/x509/x509_vfy.c:
669 static int check_revocation(X509_STORE_CTX *ctx)
670 {
671 int i, last, ok;
672 if (!(ctx->param->flags & X509_V_FLAG_CRL_CHECK))
673 return 1;
674 if (ctx->param->flags & X509_V_FLAG_CRL_CHECK_ALL)
675 last = sk_X509_num(ctx->chain) - 1;
Run Code Online (Sandbox Code Playgroud)
如您所见,如果未设置X509_V_FLAG_CRL_CHECK,它将跳过第672,673行中的整个撤销检查.
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |