【问题标题】:How do browsers decrypt a self-signed certificate?浏览器如何解密自签名证书?
【发布时间】:2021-05-04 08:21:38
【问题描述】:

我对浏览器如何使用 CA 签名证书进行了一些研究。浏览器附带一个可信 CA 的公钥列表。当浏览器收到 CA 签名的证书时,浏览器会使用可信 CA 的公钥对证书进行解密,以获取服务器的公钥。

我对浏览器如何使用自签名证书感到困惑。自签名证书由服务器的私钥签名。当浏览器收到自签名证书时,浏览器如何在不知道公钥的情况下解密证书得到公钥?

【问题讨论】:

  • 公钥是证书的一部分。它没有加密。

标签: ssl


【解决方案1】:

当浏览器收到 CA 签名的证书时,浏览器会使用受信任的 CA 的公钥对证书进行解密,以获取服务器的公钥。

浏览器不解密证书来获取公钥。浏览器只是使用 CA 的公钥来验证证书的颁发者签名。见SSL Certificate framework 101: How does the browser actually verify the validity of a given server certificate?

当浏览器收到自签名证书时,浏览器如何在不知道公钥的情况下解密证书得到公钥?

同样,没有解密。但除此之外,浏览器无法检查自签名证书是否有效。自签名证书基本上是自称是自己的人。与 CA 签署的证书相反,没有可信的第三方这样说,只有证书本身的(不可信的)所有者。

因此,此类证书在浏览器中受信任的唯一方法是因为它被显式添加为受信任,或者浏览器用户在收到有关证书的警告后显式添加了异常。

【讨论】:

  • 与 CA 签名证书相反 但是您信任 CA 签名证书的唯一原因是您确实信任 CA 本身浏览器中的自签名根证书实际上是 CA 的。最终,信任链必须建立在信念之上:“是的,我相信谷歌的 CA 就是他们所说的那样,因为他们将公共证书放在 Chrome 中。”实际上没有多少人会费力验证这一点。
  • @AndrewHenle:根 CA 随浏览器或操作系统一起提供,即它们不会突然出现。当然,这可能存在问题,但操作系统、浏览器、证书验证中的错误可能存在问题...... - 最后,一切都建立在对其他人做正确事情的信任之上。但这在“现实生活”中是正确的,即食品安全,如果信号是绿色的过马路等。
猜你喜欢
  • 2020-11-24
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2012-06-29
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多