CA 如何在没有私钥的情况下生成公钥?

信息安全 证书 证书颁发机构
2021-08-20 13:03:48

创建 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 创建公共证书?

1个回答

CA 如何在没有私钥的情况下生成公钥?

CA 不生成任何公钥。他们创建包含请求方公钥(来自 CSR)的证书。


从 CSR 中提取公钥不需要私钥。为此,请执行:

openssl req -in your-request.csr -noout -pubkey

另一方面,您在问题中包含的命令(声称其目的是“从 CSR 中提取公钥”):

openssl x509 -req -days 365 -in your-request.csr -signkey your-key.key -out your-public-key.crt

创建自签名证书。

CA 用他们的私钥签署证书,而不是你的,因此他们不需要你的。


CA 的作用是提供公钥属于声称它所属的实体的证明。

CA 可能需要验证请求者的域(域验证证书),它可能需要验证请求者证明其身份的文件

但是 CA 不需要验证请求者的私钥,因为它在数学上与公钥相关联。如果有人用他们的私钥加密了消息,它只能通过相应的公钥解密。