我正在为中间证书生成证书签名请求。我想将证书作为证书颁发机构(CA),因此我想在CSR中添加基本约束扩展。我目前正在使用以下代码
exts = sk_X509_EXTENSION_new_null();
add_ext(exts, x509_req, NID_basic_constraints, "critical,CA:TRUE");
X509_REQ_add_extensions(x509_req, exts);
sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free);
添加扩展功能如下所示
int add_ext(STACK_OF(X509_EXTENSION) *sk, X509_REQ* req, int nid, char *value)
{
X509_EXTENSION *ex;
X509V3_CTX ctx;
X509V3_set_ctx_nodb(&ctx);
X509V3_set_ctx(&ctx, NULL, NULL, req, NULL, 0);
ex = X509V3_EXT_conf_nid(NULL, &ctx, nid, value);
if (!ex)
{
log("X509V3_EXT_conf_nid generated error", cspsdk::Logging::LOG_LEVEL_INFO);
return 0;
}
sk_X509_EXTENSION_push(sk, ex);
return 1;
}
问题是签名后,证书的基本约束扩展的CA值设置为false。我在这里不知所措。任何人都可以指出这个问题。
答案 0 :(得分:0)
即使您请求CA:True,发行人也可以选择覆盖CA:False等约束。除非您要自签名证书,否则您需要与他们联系。
openssl x509 -in your-signed-cert.pem -text -noout
请检查输出是否包含“ CA:True”。