我正在创建一个用于在 C 中修改 X509
证书的 api,我想添加一种修改扩展的方法。例如,向 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);
但是在运行之后,根本找不到扩展(即使我尝试添加另一个新的)。
最佳答案
看看
demos/x509/mkcert.c
demos/x509/selfsign.c
demos/x509/mkreq.c
在您的 openssl 发行版中。我怀疑您没有设置上下文;或者您假设当您说“根本找不到”时,某些 i2d/etc 在幕后被调用。请注意,X509_sign() 及其同类确实创建了很多这样的东西。如果您没有调用任何东西 - 那么不要期望创建任何这些。
关于c - 如何修改 X509 的扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978950/