你如何修改X509的扩展?

时间:2013-04-12 19:02:24

标签: c openssl x509

我正在创建一个api来修改C中的X509证书,我想添加一种修改扩展的方法。例如,向subjectNameAlt添加另一个DNS条目,使其为DNS:example.com,DNS:example2.com而不是DNS:example.com。删除和重新添加的原因是因为我必须重新解析扩展(这很困难),我宁愿只添加一条信息。我如何通过OpenSSL API执行此操作?

我试图简单地重复使用添加代码:

ex = X509V3_EXT_conf_nid(NULL, &ctx, NID_subject_alt_name, "DNS:new.dns.example");
if (!ex)
    return;
X509_add_ext(cert,ex,-1);
X509_EXTENSION_free(ex);

但是在运行之后,根本找不到扩展名(即使我尝试添加另一个新扩展名)。

1 个答案:

答案 0 :(得分:0)

看看

  demos/x509/mkcert.c
  demos/x509/selfsign.c
  demos/x509/mkreq.c

在你的openssl发行版中。我怀疑你没有设置你的背景;或者你假设一个i2d / etc在场景后面被调用,当你说'根本找不到'时。请注意,X509_sign()及其同类会创建大量此类内容。如果你没有打电话 - 那就不要指望创造任何一个。