在CSR中添加扩展以生成中间证书

时间:2018-01-03 15:51:13

标签: ssl openssl x509 tls1.2 csr

我正在为中间证书生成证书签名请求。我想将证书作为证书颁发机构(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。我在这里不知所措。任何人都可以指出这个问题。

1 个答案:

答案 0 :(得分:0)

即使您请求CA:True,发行人也可以选择覆盖CA:False等约束。除非您要自签名证书,否则您需要与他们联系。

openssl x509 -in your-signed-cert.pem -text -noout

请检查输出是否包含“ CA:True”。