为什么SSL证书使用私钥签名?

时间:2016-12-21 19:12:27

标签: ssl ssl-certificate x509 pkix

据我所知,所有SSL证书均使用非对称pub / priv密钥对的公钥进行签名。

但是所有(至少我检查过的)互联网上的例子都是使用私钥

我发现自我签名的一种方法是使用以下命令:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

我找到的其他方式是:

sudo openssl genrsa -out mykey.key 2048
sudo openssl req -new -key mykey.key -out mycsr.csr
sudo openssl x509 -req -days 365 -in mycsr.csr -signkey mykey.key -out mycert.crt

以上示例是否使用公钥来创建证书或私钥。如果是私钥,这是正确的用法吗?

还有一件事,

自签名与CA签署证书有什么区别?
证书中是否有签名机构的其他信息?

CA签名究竟意味着什么?
他们是否使用自己的私钥来签名或者是什么?

修改

上述声明As far as I read来自以下网站的第2点。 由于我对SSL概念不熟悉,因此理解其陈述可能完全错误

http://tldp.org/HOWTO/SSL-Certificates-HOWTO/x64.html

如果使用私钥对证书进行签名,并且在apache http服务器配置中使用了相同的私钥,我仍然感到困惑的是浏览器在初始SSL握手中获取公钥的位置

我指的是apache httpd

的以下配置
<VirtualHost 192.168.0.1:443>
  DocumentRoot /var/www/html2
  ServerName www.yourdomain.com
  SSLEngine on
  SSLCertificateFile /path/to/your_domain_name.crt
  SSLCertificateKeyFile /path/to/your_private.key
  SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>

更新

我特意指出上述链接的section 1.2.2,其中包含

  

这个人,你必须暗中信任:你在浏览器中加载了他/她的证书(根证书)。证书,包含有关证书所有者的信息,如电子邮件地址,所有者姓名,证书使用,有效期,资源位置或可分辨名称(DN),其中包括公用名(CN)(网站地址或e) - 根据使用情况的邮件地址)以及证明(签署)此信息的人的证书ID。 它还包含公钥,最后是一个哈希,以确保证书未被篡改。

1 个答案:

答案 0 :(得分:0)

  

为什么使用私钥签署SSL证书?

因为这就是数字签名的定义方式。使用公钥进行签名并不能证明什么。数字签名必须是只有签名者可以做的事情,就像你在支票上的签名更难以伪造。更难。

  

据我所知,所有SSL证书均使用非对称pub / priv密钥对的公钥进行签名。

不,你没有,你误解了你在读什么。

  

但是所有(至少我检查过的)互联网上的例子都是使用私钥

当然。

  

以上示例是否使用公钥来创建证书或私钥。如果是私钥,这是正确的用法吗?

他们正在使用两者。公钥嵌入在证书中,私钥用于签名。

  

自签名与CA签署证书有什么区别?   证书中是否有签名机构的其他信息?

是的,有一个IssuerDN字段。

  

CA签名究竟意味着什么?他们是否使用自己的私钥进行签名?

  

以上陈述据我所知,是从以下网站的第2点开始。

不,不是。

  

我可能完全错了

是的。

  

如果使用私钥对证书进行签名,并且在apache http服务器配置中使用了相同的私钥,我仍然感到困惑的是浏览器在初始SSL握手中获取公钥的位置

来自证书。

  

我特别指出了上述链接的第1.2.2节,其中说明了

     

[snip]它还包含公钥,最后是一个哈希,以确保证书没有被篡改。

使用公钥签名证书没有任何意义。 '包含'并不意味着'签名'。