gpt4 book ai didi

c++ - 使用 c++ openssl lib 创建 x509 链

转载 作者:行者123 更新时间:2023-12-02 10:33:10 25 4
gpt4 key购买 nike

我有 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 证书和 key 签名制作端点证书:
openssl x509 -req -CAkey clientCA.key -CA clientCA.crt -days 365 -in clientEP.csr -out clientEP.crt -set_serial 25 -extfile clientEP.cnf
生成 RSA key 和请求很容易:
RSA_generate_key_ex(keys, 2048,e, NULL); X509_REQ_new();
但是我怎样才能获得由 clientCA.key 和 clientCA.crt 签名的请求,并将 clientEP.crt 与 C++ Openssl 库一起使用?也许可以在没有请求的情况下从此文件生成端点证书?

最佳答案

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

你可以像在 linux 上那样做(也许),

  • 为最终实体证书创建 PrivateKey。

  •      EVP_PKEY *pkey = EVP_PKEY_new(void);

    见: https://www.openssl.org/docs/man1.1.0/man3/EVP_PKEY_new.html
  • 创建一个 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
  • 创建 X509

  •     X509 *cert = X509_new(void);
  • 设置 pubkey(对应的 key 为之前制作的 privatekey)

  •     X509_set_pubkey(cert, pkey);
  • 使用 cliendCA 的私钥对 clientEP 进行签名。

  •     X509_sign(cert, pkey, 0); // third param is a hashing option.
  • 设置证书的具体配置文件。(我可能会错过一些具体步骤,但你可以做到)

  • 当你更多地搜索它时,你可能会得到信息。
    另外openssl还提供了BIO_write或PEM_write_X509等写api。

    我希望它会有所帮助。

    关于c++ - 使用 c++ openssl lib 创建 x509 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61480440/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com