我做了一些关于浏览器如何使用CA签名证书的研究。浏览器附带了一个受信任CA的公钥列表。当浏览器接收到CA签名的证书时,浏览器将使用受信任CA的公钥对证书进行解密,以获得服务器的公钥。
我对浏览器如何处理自签名证书感到困惑。自签名证书由服务器的私钥签名。当浏览器接收到自签名证书时,浏览器如何在不知道公钥的情况下解密该证书以获得公钥?
发布于 2021-01-31 02:17:29
当浏览器接收到CA签名的证书时,浏览器将使用受信任CA的公钥对证书进行解密,以获得服务器的公钥。
浏览器不解密证书以获取公钥。浏览器只使用CA的公钥来验证证书的颁发者签名。参见SSL Certificate framework 101: How does the browser actually verify the validity of a given server certificate?。
当浏览器接收到自签名证书时,浏览器如何在不知道公钥的情况下解密该证书以获得公钥?
再说一次,没有解密。但除此之外,浏览器无法检查自签名证书是否有效。自签名证书基本上是声称是他们自己的人。与CA签名的证书相反,没有可信的第三方这样说,而只是证书本身的(不可信的)所有者。
因此,在浏览器中信任这样的证书的唯一方法是,要么是因为它被显式地添加为可信的,要么是浏览器的用户在得到关于证书的警告之后显式地添加了异常。
https://stackoverflow.com/questions/65970998
复制相似问题