如何使用OpenSSL写入/读取不完整的证书签名请求';s C图书馆?
我目前正在处理x509证书。 我想做的是,考虑到一个拥有自己证书和证书颁发机构的用户:如何使用OpenSSL写入/读取不完整的证书签名请求';s C图书馆?,openssl,x509certificate,Openssl,X509certificate,我目前正在处理x509证书。 我想做的是,考虑到一个拥有自己证书和证书颁发机构的用户: 使用用户的公钥生成证书签名请求 使用CA的私钥对此CSR进行签名 如果我知道用户的私钥和CA的私钥,我知道如何做到这一点:使用X509\u-REQ\u-set\u-pubkey(REQ,user\u-private\u-key)和X509\u-REQ\u-sign(REQ,CA\u-private\u-key,EVP\u-sha256()) 但是,用户不知道CA的私钥,CA也不知道用户的私钥。因此,用户必须使
X509\u-REQ\u-set\u-pubkey(REQ,user\u-private\u-key)
和X509\u-REQ\u-sign(REQ,CA\u-private\u-key,EVP\u-sha256())
但是,用户不知道CA的私钥,CA也不知道用户的私钥。因此,用户必须使用X509\u REQ\u set\u 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
?”经过一些研究,我发现我的问题源于误解(来自我自己)CSR是如何生成的:它由关于主体的一些信息(当然包括他的公钥)组成,并用他的私钥签名(我不理解)。然后,函数X509\u REQ\u sign
不将CA的私钥作为参数,而是将主体的私钥作为参数。因此,我可以使用此函数,并使用PEM_write_X509_REQ
和PEM_read_X509_REQ
将我的CSR存储/读取为usal。经过一些研究,我发现我的问题是由于(我自己)对CSR是如何生成的误解造成的:它由有关主题的一些信息组成(当然包括他的公钥)并用他的私钥签名(我不明白)。然后,函数X509\u REQ\u sign
不将CA的私钥作为参数,而是将主体的私钥作为参数。因此,我可以使用此函数,并使用PEM\u write\u X509\u REQ
和PEM\u read\u X509\u REQ
将我的CSR存储/读取为usal