【问题标题】:Why don't need install SSL certificate when browser access a http webpage with https APIs为什么浏览器使用 https API 访问 http 网页时不需要安装 SSL 证书
【发布时间】:2014-12-28 13:47:54
【问题描述】:

我正在学习 SSL。证书的事情让我很困惑。假设有一个网页http://foo.com,它在这个页面上使用了一些https API(比如登录)。当浏览器访问此页面时,它应该有 https 请求。但是浏览器可以在不安装证书的情况下访问它。就像访问普通的 http 网页一样。

这是怎么发生的?

我的意思是加载这个http页面时有https请求,浏览器应该与服务器建立SSL连接并从服务器检查证书,就像访问https网页一样。但是我们没有为http://foo.com安装任何证书,浏览器可以正常访问。

【问题讨论】:

    标签: ssl https


    【解决方案1】:

    浏览器预先安装了一些来自常见/流行证书颁发机构的顶级证书。在握手期间,服务器将其证书发送到浏览器,浏览器决定是否实际验证证书,如果是,则验证证书是否由它已经拥有证书的已知机构之一签名。大多数时候,这已经足够了。但有时服务器使用浏览器不知道的不常见/自定义证书颁发机构,因此必须先将颁发机构的证书安装到浏览器中。

    【讨论】:

    • 谢谢,很有帮助。你知道 mitm(man-in-the-middle) 代理如何用它的证书欺骗浏览器吗?我使用 mitm 代理来调试 https。我很困惑 mitm 代理的证书中没有“https://”域名,为什么浏览器允许它在没有警告的情况下访问?
    • 属于“必须先安装自定义证书”类别。例如,看看 Fiddler。它在每次运行时动态生成自定义证书,并且 Web 浏览器会提示用户有关未知/不受信任的证书,用户必须先接受该证书,然后浏览器才会允许连接继续进行。
    • 谢谢,这启发了我。我破解了 mitmproxy(一个 python mitm 代理),了解了它的工作原理——代理发布了一个根 CA,浏览器应该安装它。然后,就像您说的:它根据域名动态生成自定义证书。例如(https://www.bar.com),它将制作一个由其根 CA 即时签署的主题名称为“*.bar.name”的证书。浏览器信任它的根 CA,然后也信任这个证书。很高兴能得到这个,再次感谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2021-10-25
    • 2021-12-16
    • 2023-03-22
    • 2012-04-23
    • 1970-01-01
    相关资源
    最近更新 更多