Certificate 为什么在创建CSR时使用私钥?

Certificate 为什么在创建CSR时使用私钥?,certificate,ssl-certificate,Certificate,Ssl Certificate,CSR主要用于创建具有可信公钥的证书 在创建CSR之前 我们创建一个私钥 openssl genrsa -out key.pem 1024 然后使用该私钥(key.pem)创建CSR(req.pem)请求 编辑: 我看到docker引擎安装了根证书、服务器证书和专用证书,并与CSR一起使用 提交CSR时提供私钥(key.pem作为输入)的确切目的是什么?因为证书应该用父私钥签名 在CSR创建过程中是否需要私钥(key.pem)来生成相应的公钥 或 私钥(key.pem)是否用于加密CSR并将

CSR主要用于创建具有可信公钥的证书

在创建CSR之前

我们创建一个私钥

openssl genrsa -out key.pem 1024
然后使用该私钥(
key.pem
)创建CSR(
req.pem
)请求


编辑:

我看到docker引擎安装了根证书、服务器证书和专用证书,并与CSR一起使用

提交CSR时提供私钥(
key.pem
作为输入)的确切目的是什么?因为证书应该用父私钥签名

在CSR创建过程中是否需要私钥(
key.pem
)来生成相应的公钥

私钥(
key.pem
)是否用于加密CSR并将生成的签名附加到CSR?

PKCS#10认证请求()的结构松散地描述为:

Request:
    Info:
        Version
        Name
        PublicKey
        Attributes
    SignatureAlgorithmIdentifier
    Signature
这些属性是请求的属性,其中一个属性(如果它们可能是您为生成的证书请求的属性)

CA可以根据自己的选择,尽可能多或少地尊重CSR。例如,StartSSL只读取公钥信息,并放弃CSR的其余部分——他们需要的所有其他内容都基于您从他们的web UI和您的帐户状态发出的请求

一般来说,CA不会忽略公钥值,因为如果他们为您声明了一个新的密钥对,他们需要弄清楚您应该如何获取私钥。因此,公钥部分需要存在且正确。OpenSSL的命令可以通过读取私钥来获取公钥值,然后将其嵌入CSR中

需要私钥的第二个原因是签署请求。我将断言,签名请求的主要原因是强制/强烈建议您在此阶段保存私钥,这样您就不会在几分钟后返回“请撤销此新证书,我已丢失私钥”请求。RFC(也)有这样的说法:

注2-认证请求上的签名可防止 实体请求具有另一方公钥的证书。 这样的攻击将使实体具有假装攻击的次要能力 是由另一方签署的任何消息的发起人。这 只有当实体不知道消息时,攻击才是重要的 正在签名且消息的签名部分未标识 签名者。实体仍无法解密消息 当然是为另一方准备的

PKCS#10认证请求()的结构大致描述如下:

Request:
    Info:
        Version
        Name
        PublicKey
        Attributes
    SignatureAlgorithmIdentifier
    Signature
这些属性是请求的属性,其中一个属性(如果它们可能是您为生成的证书请求的属性)

CA可以根据自己的选择,尽可能多或少地尊重CSR。例如,StartSSL只读取公钥信息,并放弃CSR的其余部分——他们需要的所有其他内容都基于您从他们的web UI和您的帐户状态发出的请求

一般来说,CA不会忽略公钥值,因为如果他们为您声明了一个新的密钥对,他们需要弄清楚您应该如何获取私钥。因此,公钥部分需要存在且正确。OpenSSL的命令可以通过读取私钥来获取公钥值,然后将其嵌入CSR中

需要私钥的第二个原因是签署请求。我将断言,签名请求的主要原因是强制/强烈建议您在此阶段保存私钥,这样您就不会在几分钟后返回“请撤销此新证书,我已丢失私钥”请求。RFC(也)有这样的说法:

注2-认证请求上的签名可防止 实体请求具有另一方公钥的证书。 这样的攻击将使实体具有假装攻击的次要能力 是由另一方签署的任何消息的发起人。这 只有当实体不知道消息时,攻击才是重要的 正在签名且消息的签名部分未标识 签名者。实体仍无法解密消息 当然是为另一方准备的


CSR使用您的私钥进行签名。由于它包含公钥,CA能够验证签名。@Lorinczyzigmond,并且该签名在从CSR创建证书的过程中被CA私钥的签名替换(
openssl x509-req-days 365-sha256-in req.pem-CA.pem-CAkey CA-key.pem-CA createserial-out server-cert.pem
)。从CSR(
req.pem
)到certificate(
server-cert.pem
)的内容的唯一区别是什么?CA可能会更改字段、添加/删除用法等。CA还确定证书的有效期间隔(“不在之前”、“不在之后”字段)。编辑:与CSR不同,证书还包含颁发者特定的数据。@Lorinczyzigmond签名是否被替换?正如我在之前的评论中所问的那样……是的,或者准确地说,cert和csr是不同的文档,由不同的方(颁发者CA和请求者)签署。csr是用您的私钥签署的。由于它包含公钥,CA能够验证签名。@Lorinczyzigmond,并且该签名在从CSR创建证书的过程中被CA私钥的签名替换(
openssl x509-req-days 365-sha256-in req.pem-CA.pem-CAkey CA-key.pem-CA createserial-out server-cert.pem
)。从CSR(
req.pem
)到certificate(
server-cert.pem
)的内容的唯一区别是什么?CA可能会更改字段、添加/删除用法等。CA还确定证书的有效期间隔(“不在之前”、“不在之后”字段)。编辑:证书还包含颁发者特定数据,与