我试图弄清楚CSR是如何产生的,以及公钥和私钥的作用。
Server1:
现在,我想要CSR,为此,我将去CA签署。
对于创建CSR请求,是基于服务器的公钥还是基于私钥?
我提到了这个SO question;在那里,它说服务器(它正在请求CSR)在将它发送到CA之前,通过它的私钥对CSR进行签名。
我有点困惑,有以下问题:
的服务器的公钥。
的公钥部分
发布于 2020-07-30 12:07:21
最终产品(由CA签名的证书):它包含服务器的私钥还是公钥?
证书是一份公共文件。因此,它只能包含公钥。如果它包含私钥,那么该密钥将不再是私有的。
在启动CSR请求时,为什么服务器需要通过其私钥对CSR进行签名?这是正确的吗?
是的,总的来说是正确的。这个概念称为拥有证明(PoPo),它用于向CA证明您(或本例中的服务器)拥有与公钥相对应的私钥,该私钥将由CA签名(或至少在CA签署证书之前的时候)。如果CA不坚持使用PoPo,那么您可以拒绝任何签名的未来消息,如下所示:
,
,后来你决定把1000美元花在度假上,所以你对签名的消息提出异议,银行说,但是你用数字签名来认证它!!
如果银行在我向CA提交您的公钥时坚持使用PoPo,我的请求就会失败,您以后也不能拒绝您的消息。但是,一旦CA在没有PoPo的情况下签署了请求,那么所有的赌注都是不可否认的。
最终,CA是否从CSR生成证书,以及它如何从CSR派生服务器的公钥?
没有派生操作--您的服务器的公钥位于名为CertificateRequestInfo.的构造中的请求中
此CertificateRequestInfo包含您(或服务器)的名称和公钥。它还可以包含其他元素,如请求的扩展。CA从这个tbsCertificate获取它所需要的任何信息(只有公钥是强制性的),并使用这个信息生成一个名为CertificateRequestInfo的构造( 'tbs‘表示要签名)。此构造包含您的名称、公钥和CA认为合适的任何扩展。然后对此tbsCertificate进行签名以创建证书。
https://stackoverflow.com/questions/63180110
复制