Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用OpenSSL写入/读取不完整的证书签名请求';s C图书馆?_Openssl_X509certificate - Fatal编程技术网

如何使用OpenSSL写入/读取不完整的证书签名请求';s C图书馆?

如何使用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证书。 我想做的是,考虑到一个拥有自己证书和证书颁发机构的用户:

  • 使用用户的公钥生成证书签名请求
  • 使用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
    功能,然后以某种方式存储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