如何验证SSL证书?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

安全验证SSL证书所需的一系列步骤是什么?当访问https站点时,服务器向客户端(浏览器)发送证书,浏览器从该证书中获取证书颁发者信息,然后使用该证书与颁发者联系,并以某种方式比较证书的有效性。

  • 这到底是怎么做到的?
  • 这个过程如何使它免受中间人的攻击呢?
  • 是什么阻止了一些随机的人建立他们自己的验证服务来用于中间人攻击,所以一切看起来都是安全的?
提问于
用户回答回答于

以下是一个非常简单的解释:

  1. Web浏览器下载Web服务器的证书,该证书包含Web服务器的公钥。此证书使用受信任证书颁发机构的私钥签名。
  2. 您的Web浏览器安装了所有主要证书颁发机构的公钥。它使用此公钥验证Web服务器的证书确实由受信任的证书颁发机构签名。
  3. 证书包含Web服务器的域名和/或IP地址。Web浏览器向证书颁发机构确认证书中列出的地址是它打开连接的地址。
  4. Web浏览器生成共享对称密钥,用于加密此连接上的HTTP通信;这比对所有内容使用公钥/私钥加密要有效得多。您的浏览器用Web服务器的公钥加密对称密钥,然后将其发回,从而确保只有Web服务器才能解密它,因为只有Web服务器才有其私钥。
用户回答回答于

除了购买证书之外,还可以免费创建自己的证书;这称为“自签名证书”。自签名证书和购买证书之间的区别很简单:购买的证书已由浏览器已经知道的证书颁发机构签名。

如果安全地分发了一个自签名证书(或CA证书,如bobince建议的那样),并将其安装在将使用您的站点的浏览器中。它就像购买的一样安全,不容易受到中间人的攻击和伪造证书。显然,这意味着只有少数人需要安全访问您的站点(例如,内部应用程序、个人博客等),这才是可行的。

扫码关注云+社区