【问题标题】:HTTPS url not encryptedHTTPS 网址未加密
【发布时间】:2016-06-07 00:03:53
【问题描述】:

我正在使用 Charles 代理 来获取来自我的 Android 应用的所有请求到网络服务。

问题是查尔斯向我展示了完整的请求,这意味着我可以看到整个 URL、标题和正文,因此我可以看到 www.example.com/rest/resource/param1/param2, 我发送的 JSON 以及身份验证标头。

在阅读了thisthis one 之类的几篇文章后,我认为使用 TLS 的好处是只能从 URL 获取域名,在这种情况下 www.example.com

为了确保这不是客户端的错,我使用 RetrofitHttpsURLConnection 请求了 Web 服务资源,两次都可以看到整个请求。

我猜证书也被正确安装了,因为每次发出 https 请求时它都会显示在浏览器中。我在这里遗漏了其他东西还是这是正常行为?

到目前为止,我找不到发生这种情况的原因,因此我们将不胜感激。

【问题讨论】:

    标签: android ssl https retrofit charles-proxy


    【解决方案1】:

    要使用 Charles 代理进行调试,您必须在浏览器(客户端)上安装证书。

    使用 https,URL 被加密

    但由于您选择使用该代理,您的浏览器会与该代理建立安全连接,并与该网站建立代理连接。所以,只有 1)你,2)代理 3)网站可以解密 https 流量。

    通过在您的浏览器上安装 CA 证书您允许扣押相应私钥的人(在您的情况下为您的代理)冒充(因此,使用 MITM 解密)任何网站

    【讨论】:

    • 好的,谢谢,现在我明白了,您能否推荐一种方法来防止这种攻击?
    • 这不是攻击,您自愿安装了该证书。为了避免这种“攻击”,请不要安装它;)
    • 是的,但是任何安装 Charles 根证书的人也可以解密请求。
    • 我不具体了解查尔斯,如果他们关心安全性,每个客户使用不同的证书。但无论如何,在测试后禁用该证书会更安全。
    • 当您尝试安装此类证书(称为自签名证书)时,操作系统很可能会给您一个安全警告,提示您不应安装。您必须单击继续才能在您的设备上进行安装。这样做,你就故意允许 Charles 对你进行 MITM 攻击。
    猜你喜欢
    • 1970-01-01
    • 2012-06-10
    • 2015-08-20
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多