1

我正在创建一个用于X509在 C 中修改证书的 api,并且我想添加一种修改扩展的方法。例如,添加另一个 DNS 条目subjectNameAlt,使其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);

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

4

1 回答 1

0

看一下

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

在您的 openssl 发行版中。我怀疑您没有设置上下文;或者您假设当您说“根本找不到”时会在幕后调用某些 i2d/etc。请注意,X509_sign() 和他们的同类确实创造了很多这样的东西。如果您没有调用任何东西 - 那么不要期望创建任何这些。

于 2013-05-29T15:57:18.533 回答