【问题标题】:How to write/read an incomplete Certificate Signing Request with OpenSSL's C library?如何使用 OpenSSL 的 C 库编写/读取不完整的证书签名请求?
【发布时间】:2019-08-05 10:41:17
【问题描述】:

我目前正在处理 x509 证书。 我想要做的是,考虑拥有自己的证书和证书颁发机构的用户:

  1. 使用用户的公钥生成证书签名请求。
  2. 使用 CA 的私钥签署此 CSR。

如果我知道用户的私钥和 CA 的私钥,我就知道该怎么做:使用X509_REQ_set_pubkey(req, user_private_key)X509_REQ_sign(req, CA_private_key, EVP_sha256())

但是,用户不会知道 CA 的私钥,CA 也不会知道用户的私钥。因此,用户必须使用X509_REQ_set_pubkey 函数,然后以某种方式存储 CSR 并将其发送给 CA。
这就是我遇到的问题:用户可以通过 PEM_write_X509_REQ 函数将其 CSR 写入文件,但 CA 无法通过 PEM_read_X509_REQ 函数读取它,因为 CSR 是未签名的。

有人知道实现我想要的方法吗?

提前致谢!

--- 编辑---

其实这个问题有点太长了,可以改写为:“什么是C库相当于OpenSSL的命令openssl req -new -key key.pem -out csr.pem?”

【问题讨论】:

    标签: openssl x509certificate


    【解决方案1】:

    经过一些研究,我发现我的问题是由于(我自己)对如何制作 CSR 的误解:它由有关该主题的一些信息(当然包括他的公钥)组成,并且它是 用他的私钥签名(我不明白)。然后,函数X509_REQ_sign 不将CA 的私钥作为参数,而是将主题的私钥作为参数。因此,我可以使用此功能并使用 PEM_write_X509_REQPEM_read_X509_REQ 来存储/读取我的 CSR。

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 2015-07-29
      • 2010-10-17
      • 2014-08-23
      • 2017-12-27
      • 2012-08-21
      • 2011-09-02
      • 2021-10-04
      • 2014-11-19
      相关资源
      最近更新 更多