在 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。我在这里不知所措。谁能指出这个问题。

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

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

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

最新更新