2

我正在尝试使用 openssl(版本 1.0.1.e)在 CSR 中添加“证书策略”扩展。

  1. 证书请求者是否允许处理证书策略或只有 CA 应该这样做?

  2. 基于mkreq()file中的功能openssl/demos/x509/openssl/demos/x509/mkreq.c,我添加了以下行:

     add_ext(exts, NID_certificate_policies, "1.3.6.1");
    

不幸的是,它会导致分段错误。语法是否正确?任何线索有什么问题?

4

2 回答 2

3
  1. 是的,允许证书请求者插入证书策略或任何其他扩展。但证书颁发机构可能会验证请求或拒绝它。

  2. 默认情况下,openssl 配置文件 openssl.cnf 包含以下 CRS 扩展设置:

    [ v3_req ]
    
    # Extensions to add to a certificate request
    
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment 
    

为了支持 certificate_policies 扩展,必须在此部分添加“certificatePolicies”设置。

于 2013-10-14T14:32:16.623 回答
0

已解决 add_ext 包含对函数的调用

X509V3_EXT_conf_nid(NULL, NULL, nid, (char *)value);

Context 参数是 NULL,如果你用上下文重写这个函数,你的段错误将被修复。f.例子

int add_ext_by_name(STACK_OF(X509_EXTENSION) *sk, const char *name, const char *value)
{
    X509_EXTENSION *ex;
    X509V3_CTX ctx;
    X509V3_set_ctx_test(&ctx);
    ex = X509V3_EXT_nconf(NULL, &ctx, name, value);
    if (!ex) {
        printf("%s: %s\n", tr("no ext"), name);
        return 0;
    }
    sk_X509_EXTENSION_push(sk, ex);
    return 1;
}

拨电至

add_ext_by_name(exts, "certificatePolicies", "1.2.643.100.113.1, 1.2.643.100.113.2");

会成功的。您可以自己编写带有 NID 参数的函数 :)

于 2019-07-23T10:13:49.707 回答