主要创建CSR来创建具有可信公钥的证书。
在创建CSR之前,
我们创建一个私钥
openssl genrsa -out key.pem 1024
,然后使用该私钥(key.pem
)创建CSR(req.pem
)请求。
openssl req -new -key key.pem -out req.pem
编辑:
我看到一个Docker引擎安装了与CSR一起使用的根证书,服务器证书和私有证书
在提交CSR时提供私钥(key.pem
作为输入)的确切目的是什么?因为证书应该使用父私钥签名
在创建CSR期间是否需要私钥(key.pem
)来生成相应的公钥?
或
私钥(key.pem
)是否用于加密CSR,并将生成的签名附加到CSR?
答案 0 :(得分:2)
PKCS#10认证请求(RFC 2986)的结构大致描述如下:
Request:
Info:
Version
Name
PublicKey
Attributes
SignatureAlgorithmIdentifier
Signature
属性是请求的属性,如果可能是您要请求的结果证书的属性,则为该属性。
CA可以选择多少或更少的CSR。例如,StartSSL仅读取公共密钥信息,而丢弃其余的CSR-他们需要的其他一切都是基于您从Web UI和帐户状态发出的请求。
通常,CA不会忽略公钥值,因为如果他们为您断言了新的密钥对,则需要弄清楚应该如何获得私钥。因此,公钥部分必须存在且正确。 OpenSSL的命令可以通过读取私钥来获取公钥值,然后将其嵌入到CSR中。
需要私钥的第二个原因是对请求进行签名。我会断言,签署请求的主要原因是在此阶段强行/强烈建议您保存私钥,因此您不会在几分钟后返回“请撤消此新证书,我已经丢失了私钥”请求。 RFC(也)说:
注2-认证请求上的签名可以防止 实体使用另一方的公钥请求证书。 此类攻击将使实体具有较小的假装能力 是对方签名的任何消息的始发者。这个 仅当实体不知道消息时,攻击才有意义 正在签名,并且消息的签名部分无法识别 签名者。该实体仍将无法解密消息 当然是给对方的。