使用c ++ openssl lib创建x509链

问题描述 投票:0回答:1

我有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?也许可以在没有请求的情况下从此文件生成端点证书?

c++ openssl x509
1个回答
0
投票

Openssl提供了各种功能,您可以使用它们。最好搜索更多或访问openssl组织。并仔细阅读每个功能的说明。

您可以像在linux(也许)上做的一样,

  1. 为最终实体证书创建私钥。
     EVP_PKEY *pkey = EVP_PKEY_new(void);

参见:https://www.openssl.org/docs/man1.1.0/man3/EVP_PKEY_new.html

  1. 创建RSA并将其设置为PrivateKey
    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

  1. 创建X509
    X509 *cert = X509_new(void);
  1. 设置公钥(对应于私钥的早期密钥)
    X509_set_pubkey(cert, pkey);
  1. 使用cliendCA的私钥对clientEP进行签名。
    X509_sign(cert, pkey, 0); // third param is a hashing option.
  1. 设置证书的特定配置文件。(我可能会错过某些特定步骤,但是您可以这样做)

当您在Google上搜索更多信息时,可能会得到该信息。另外,openssl提供了一个写api,例如BIO_write或PEM_write_X509等。

我希望会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.