【问题标题】:How can we ensure the browser actually checks the SSL certificate with the CA? [closed]我们如何确保浏览器确实检查了 CA 的 SSL 证书? [关闭]
【发布时间】:2016-01-29 00:24:17
【问题描述】:

我正在尝试了解 SSL 的工作原理。我的理解是,在你第一次到达服务器后(比如https://www.google.com),服务器会向你发送它的公钥。然后,您的浏览器会检查以确保此公钥有效(未过期等)且合法;后者是通过与根 CA 进行检查来完成的,以确保公钥的签名与 CA 记录的内容相匹配。如果一切顺利,那么您的浏览器将使用该公钥加密所有内容,并且只有服务器可以解密它(因为只有服务器拥有私钥)。

现在,考虑一个精心设计的中间人攻击:每次我的浏览器尝试检查 CA 时,中间服务器都会将我的请求重新路由到另一个服务器,而不是 CA。该服务器验证任何签名!这样,即使我得到了错误的证书,我的浏览器也不会知道。例如,这意味着我的 ISP 可以向我发送假证书并窃听我的连接。

对此的防范(如果我错了,请纠正我)是为了检查 CA 的证书,浏览器会建立到 CA 的 SSL 连接,但这次它不需要验证公共从 CA 获得的密钥;它知道所有 CA 的正确公钥。

但是我怎么知道有人没有在我的计算机上为假 CA 安装假证书?我怎么知道每次升级浏览器时都没有安装恶意软件?

【问题讨论】:

  • 这不是一个编程问题,也不是真正的主题。您在Information Security 上的运气可能会更好,但我肯定会在发布之前在那里进行彻底的搜索。我大约 99% 的人肯定它之前会被问过。您可能在这里也这样做过;查看您右侧(在招聘广告下方)的相关问题列表,其中第一个问题询问如何验证 SSL 证书。

标签: security ssl encryption https


【解决方案1】:

这不是证书验证的工作方式。

这是一个离线过程。未联系 CA。相反,服务器证书包含 CA 的签名。此签名使用浏览器内置(或操作系统)的 CA 证书进行验证。

您可以在浏览器设置中查看受信任的根证书列表。

我如何知道有人没有在我的计算机上为假 CA 安装假证书?

嗯,这将是一个问题。事实上,这确实发生了。一些公司经常在他们发给员工的机器上安装假根证书,以允许他们拦截 HTTPS 连接。一些病毒扫描程序和防火墙产品也可以这样工作。

如果您担心需要锁定系统。

我怎么知道每次升级浏览器时都没有安装恶意软件?

同样的事情。您从 Mozilla、Microsoft、Apple、Google 或 Opera 下载软件,您必须信任它们。至少确保您从官方渠道获得软件(而不是在街头找到的一些 USB 上)。

【讨论】:

    【解决方案2】:

    我的理解是,在你第一次到达服务器后(比如https://www.google.com),服务器会向你发送它的公钥。

    没有。它会向您发送其证书,并且它会每次发送一次(忽略 SSL 会话恢复)。

    然后您的浏览器会检查以确保此公钥有效(未过期等)且合法;

    没有。它对证书执行此操作。单独的公钥没有到期日期、数字签名等可供检查。

    后者是通过与根 CA 核对来完成的,以确保公钥的签名与 CA 记录的内容相匹配。

    没有。这是通过检查证书的签署者(颁发者)是否已经被本地安装的 CA 证书集信任来完成的。与颁发 CA 没有联系。

    如果一切顺利,那么您的浏览器将使用该公钥加密所有内容,并且只有服务器可以解密它(因为只有服务器拥有私钥)。

    没有。这是错误的信息,经常重复,总是错误的。 SSL 使用通过密钥协商协议协商的对称会话密钥。如果你说的是真的,那么 SSL 只能在一个方向上安全地通信,而且速度会像雨季一样慢。

    现在,考虑一个精心设计的中间人攻击:每次我的浏览器尝试检查 CA 时,中间服务器都会将我的请求重新路由到另一个服务器,而不是 CA。该服务器验证任何签名!这样,即使我得到错误的证书,我的浏览器也不会知道。例如,这意味着我的 ISP 可以向我发送假证书并窃听我的连接。

    由于没有与 CA 通信,因此没有此类攻击。

    对此的保护措施(如果我错了,请纠正我)是为了检查 CA 的证书,浏览器会建立到 CA 的 SSL 连接,但这次它不需要验证公共从 CA 获得的密钥;它知道所有 CA 的正确公钥。

    没有。无需保障。见上文。

    但是我怎么知道有人没有在我的计算机上为假 CA 安装假证书?我怎么知道每次升级浏览器时都没有安装恶意软件?

    你没有。

    【讨论】:

    • 但是如果一个新的根 CA 或中间 CA 打开了,浏览器如何使用它呢?仅通过本地升级安装新 CA 的公钥和证书?
    • @Merik 不一定。如果新 CA 的证书由已受信任的根之一签名,则无需进一步。
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2016-10-05
    相关资源
    最近更新 更多