在创建CSR以便以后可以将其粘贴到CA以生成签名的TLS证书时,首先生成一个私钥:
openssl genrsa -out your-key.key 2048
使用私钥,您可以生成CSR:
openssl req -new -key your-key.key -out your-request.csr
如果您想从CSR中提取公钥,那么我看到的所有示例都要求私钥出现在openssl
命令中:
openssl x509 -req -days 365 -in your-request.csr -signkey your-key.key -out your-public-key.crt
我假设CA会做一些类似的事情来签署证书,从而创建一个公钥。但是,在填写请求表单时,您只需要获得CSR,而不是私钥。
我的问题是:他们是如何在没有私钥的情况下从CRT创建公共证书的?
发布于 2017-02-07 15:26:46
CA如何在没有私钥的情况下生成公钥?
CA不生成任何公钥。它们创建包含请求方公钥的证书(来自CSR)。
私钥不是从CSR提取公钥所必需的。为此,请执行:
openssl req -in your-request.csr -noout -pubkey
另一方面,您在问题中包含的命令(声称其目的是“从CSR中提取公钥”):
openssl x509 -req -days 365 -in -in-request.csr -signkey your key.key -out -days-public-key.crt
创建自签名证书。
CA用他们的私钥签署证书,而不是你的,因此他们不需要你的。
CA的作用是提供一个证明,证明公钥属于声称属于它的实体。
CA可能需要验证请求者的域(域验证证书),它可能需要验证请求者证明其身份的文件。
但是CA不需要验证请求者的私钥,因为它在数学上与公钥绑定。如果有人用私钥加密消息,则只能由相应的公钥解密。
https://security.stackexchange.com/questions/150654
复制相似问题