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

为什么SSL证书使用私钥签名?,ssl,ssl-certificate,x509,pkix,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 -ou

据我所知,所有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签名实际上意味着什么?
他们是否使用自己的私钥签名,或者这是怎么回事

编辑

据我所知,上述声明来自以下网站的第2点。 我可能完全错误地理解了它的声明,因为我对SSL概念非常陌生

如果私钥用于对证书进行签名,并且在ApacheHTTP服务器配置中也使用相同的私钥,那么我仍然不清楚浏览器在其初始SSL握手中从何处获取公钥

我指的是ApacheHTTPD的以下配置

<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>

DocumentRoot/var/www/html2
服务器名www.yourdomain.com
斯伦金安
SSLCertificateFile/path/to/your\u domain\u name.crt
SSLCertificateKeyFile/path/to/your_private.key
SSLCertificateChainFile/path/to/DigiCertCA.crt
更新:

我特别指出上面链接的
部分1.2.2
,其中指出

您必须隐式信任此人:您已在浏览器中加载他/她的证书(根证书)。证书包含有关证书所有者的信息,如电子邮件地址、所有者姓名、证书用法、有效期、资源位置或可分辨名称(DN),其中包括通用名称(CN)(网站地址或电子邮件地址,具体取决于用法)和认证者的证书ID(签名)这个信息它还包含公钥,最后是一个哈希,以确保证书未被篡改

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

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

据我所知,所有SSL证书都是使用非对称pub/priv密钥对的公钥签名的

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

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

当然

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

他们两者都在使用。公钥嵌入到证书中,私钥用于对证书进行签名

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

是的,有一个IssuerDN字段

CA签名实际上意味着什么?他们是否使用自己的私钥签名

据我所知,上述声明来自以下网站的第2点

不,不是

我可能完全错了

是的

如果私钥用于对证书进行签名,并且在ApacheHTTP服务器配置中也使用相同的私钥,那么我仍然不清楚浏览器在其初始SSL握手中从何处获取公钥

从证书上

我特别指出上面链接的第1.2.2节,其中指出

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


使用公钥对证书进行签名没有任何意义。”“包含”并不意味着“已签名”。

所有SSL证书都是使用公钥签名的
您在哪里读到的?数字签名只使用私钥。公钥仅用于验证签名。区别在于自签名时,
主题
颁发者
字段相等。否则,它是CA签名的。CA将其名称放入
颁发者
字段。浏览器通过对这些字段进行匹配来区分自签名证书和CA签名证书。Dow投票支持“据我所知”-请提供此信息的来源,因为它要么是错误的,要么是您误解了它。同样,在把多个问题放在一个问题上投了反对票。@steffen ullrich,我可能误解了。我指的是第2点,你链接中的一句话:
要对消息签名,你要创建它的散列,然后用你的私钥加密散列。我不确定是否有办法误解这句话。还有最后一个问题:这些是用于生成签名证书的命令
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
我们在证书生成中在哪里输入公钥,以便浏览器从证书中获取它?在所有命令中,我们只传递私有key@user3151330
mykey.key
是密钥对,而不仅仅是公钥。别让它溜走。