我正在创建一个将由我的服务器处理的CSR。 它需要设置subjectNameAlt,以便服务器可以处理它。 我进行了广泛的搜索,并且只发现了如何使用普通的X509证书,而不是X509_REQ。 我怎么能这样做(使用C和OpenSSL。即我需要相当于X509_get_ext_d2i
但是X509_REQ
)?
编程
看看OpenSSL附带的demos/x509/mkreq.c
文件。 它会创建一个请求并添加一个电子邮件地址作为替代名称。 剥下来它做了以下事情:
exts = sk_X509_EXTENSION_new_null(); add_ext(exts, NID_subject_alt_name, "email:steve@openssl.org"); X509_REQ_add_extensions(x, exts); sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free);
add_ext
的实现方式如下:
int add_ext(STACK_OF(X509_EXTENSION) *sk, int nid, char *value) { X509_EXTENSION *ex; ex = X509V3_EXT_conf_nid(NULL, NULL, nid, value); if (!ex) return 0; sk_X509_EXTENSION_push(sk, ex); return 1; }
从命令行
虽然OP要求API,但我将此部分留给其他人使用。
openssl.cnf
文件复制到临时的openssl-san.cnf
文件,然后编辑如下:
[req] req_extensions = v3_req [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = host1.yourdomain.tld DNS.2 = host2.yourdomain.tld
以上就是c/c++开发分享如何将subjectNameAlt扩展名添加到X509_REQ?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562192.html