据我所知,所有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。 它还包含公钥,最后是一个哈希,以确保证书未被篡改。
答案 0 :(得分:0)
为什么使用私钥签署SSL证书?
因为这就是数字签名的定义方式。使用公钥进行签名并不能证明什么。数字签名必须是只有签名者可以做的事情,就像你在支票上的签名更难以伪造。更难。
据我所知,所有SSL证书均使用非对称pub / priv密钥对的公钥进行签名。
不,你没有,你误解了你在读什么。
但是所有(至少我检查过的)互联网上的例子都是使用私钥
当然。
以上示例是否使用公钥来创建证书或私钥。如果是私钥,这是正确的用法吗?
他们正在使用两者。公钥嵌入在证书中,私钥用于签名。
自签名与CA签署证书有什么区别? 证书中是否有签名机构的其他信息?
是的,有一个IssuerDN字段。
CA签名究竟意味着什么?他们是否使用自己的私钥进行签名?
是
以上陈述据我所知,是从以下网站的第2点开始。
不,不是。
我可能完全错了
是的。
如果使用私钥对证书进行签名,并且在apache http服务器配置中使用了相同的私钥,我仍然感到困惑的是浏览器在初始SSL握手中获取公钥的位置
来自证书。
我特别指出了上述链接的第1.2.2节,其中说明了
[snip]它还包含公钥,最后是一个哈希,以确保证书没有被篡改。
使用公钥签名证书没有任何意义。 '包含'并不意味着'签名'。