为什么我必须从私钥创建证书请求(CSR)?

Ana*_*r H 2 ssl openssl certificate csr private-key

我正在尝试使用以下方法创建证书请求(CSR),我需要提供私钥,我的理解是CSR需要/仅包含公钥信息以及公司名称等请求者的其他详细信息.但是如果提取公钥并在创建CSR时传递它会抛出以下错误,所以我想知道它为什么需要私钥,虽然我理解私钥也包含公钥,是不是因为公钥是可信的什么时候使用密钥对或其他形式的私钥?

openssl genrsa -out ~/domain.com.ssl/domain.com.key 2048

openssl req -new -sha256 -key ~/domain.com.ssl/domain.com.key -out ~/domain.com.ssl/domain.com.csr
Run Code Online (Sandbox Code Playgroud)

尝试使用公钥生成:

openssl rsa -in  domain.com.key.pem -pubout domain.publickey

openssl req -new -sha256 -key domain.publickey -out cert.csr

unable to load Private Key
140258108909384:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)

use*_*421 6

证书的重点是在私钥和您之间建立关系作为证书中的身份.

  • CSR由私钥签名并由CA验证(使用CSR中的公钥),因此他知道您拥有该密钥对.
  • 于是,他将验证脱机,你是你说你是谁,拥有该领域,等等,然后与它签署私钥.
  • 那么,如果第三方信任他,他就可以信任证书所说的内容,即其所有者是谁所说的.
  • 然后,如果他能够通过使用您的私钥的SSL握手中的另一个签名来确定他正在与之通话的同伴拥有该证书,那么他就知道对等人就是您.

  • @ user1370642您对签名的理解有点过时了.CSR包括明文*中的公钥和身份信息*,以及*使用您的私钥生成的签名*.CA使用您公钥的纯文本版本来验证(不解密)您的签名.这是签名通常的工作方式:签名*被添加到*正在签名的数据,而不是发送而不是数据. (2认同)