我有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签名的请求,并通过C ++ Openssl库获取clientEP.crt?也许可以在没有请求的情况下从此文件生成端点证书?
Openssl提供了各种功能,您可以使用它们。最好搜索更多或访问openssl组织。并仔细阅读每个功能的说明。
您可以像在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.
当您在Google上搜索更多信息时,可能会得到该信息。另外,openssl提供了一个写api,例如BIO_write或PEM_write_X509等。
我希望会有所帮助。