Я создаю запрос на подпись сертификата для промежуточного сертификата. Я хочу сделать сертификат центром сертификации (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. Я в недоумении здесь. Может ли кто-нибудь указать на проблему.