[英]Create x509 chain with c++ openssl lib
我有 clientCA.key 和 clientCA.crt - 中间私钥和证书。 现在,我在命令行生成端点私钥和证书请求:
openssl req -new -nodes -newkey rsa:2048 -keyout clientEP.key -out clientEP.csr \ -subj "/C=CA/ST=AAA/L=BBB/O=CCC/OU=DDD/CN=EEE/emailAddress=m@m"
然后通过中间 CA 证书和密钥签名制作端点证书:
openssl x509 -req -CAkey clientCA.key -CA clientCA.crt -days 365 -in clientEP.csr -out clientEP.crt -set_serial 25 -extfile clientEP.cnf
生成 RSA 密钥和请求很容易: RSA_generate_key_ex(keys, 2048,e, NULL);
X509_REQ_new();
但是我怎样才能获得由 clientCA.key 和 clientCA.crt 签名的请求,并将 clientEP.crt 与 C++ Openssl 库一起使用? 也许可以在没有请求的情况下从此文件生成端点证书?
Openssl 提供各种功能,您可以使用它们。 最好搜索更多或访问 openssl org。 并仔细阅读每个 function 的说明。
你可以像在 linux 上那样做(也许),
EVP_PKEY *pkey = EVP_PKEY_new(void);
参见: https://www.openssl.org/docs/man1.1.0/man3/EVP_PKEY_new.html
RSA *rsa = RSA_generate_key(1024, 3, 0, 0);
EVP_PKEY_set1_RSA(pkey, RSA *key);
另见https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_set1_RSA.html
X509 *cert = X509_new(void);
X509_set_pubkey(cert, pkey);
X509_sign(cert, pkey, 0); // third param is a hashing option.
当你更多地搜索它时,你可能会得到信息。 另外,openssl提供了写api如BIO_write或PEM_write_X509等。
我希望它会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.