【问题标题】:how to debug an ssl connection?如何调试 ssl 连接?
【发布时间】:2011-06-14 13:29:35
【问题描述】:

我有一个通过 https 连接到 Web 服务的客户端应用程序。我需要“嗅探”网络服务和我的客户端之间的所有网络流量,以检查一切是否正常,即我必须调试连接。

我尝试过 Wireshark,但由于我没有服务器私钥,因此在 Wireshark 屏幕上显示的数据当然是加密的。

当我无法访问服务器本身以及私钥和其他相关内容时,有没有办法观察我的客户端和 Web 服务之间的 ssl 网络流量?

提前致谢。

【问题讨论】:

    标签: web-services debugging ssl https sniffing


    【解决方案1】:

    看到这个:Debugging SSL communications

    我知道理论上可以做到——您可以设置一个与目标 Web 服务通信的代理,将您的应用程序指向通过此代理进行连接。这是一个已知的限制 - Https 假设您信任安装在您机器上的所有代理和证书。它是Man-in-the-middle attack 的一种形式。

    看看Fiddler是否有用。

    Man-in-the-middle attacks

    在一个 中间人攻击,攻击者 拦截用户流量以捕获 证书和其他相关 信息。然后攻击者使用 此信息访问实际 目标网络。在此期间 过程中,攻击者通常服务于 作为代理/网关,呈现 向用户发送虚假 SSL VPN 站点;这 代理/网关通过任何 用户输入的身份验证 真正的目的地网站。

    【讨论】:

    • HTTP 代理将无法让您看到它用于的 HTTPS 流量:它将所有内容直接中继到目标服务器。 (不过,您可以看到服务器的地址和端口。)
    • @Bruno,常规的 HTTP 代理不会,但您可以使用代理。有一些企业监控工具可以做到这一点。它依赖于在你的机器上添加一个可靠的证书和代理隐藏与 HTTPS 服务器的所有通信。
    • 不,您不必信任 HTTP 代理来确保 HTTPS 连接的安全,只需信任您计算机上的 CA 证书即可。 HTTP 代理不会拦截或更改 HTTPS 连接,它几乎不转发它,包括整个 SSL/TLS 交换(参见 HTTP CONNECT 方法)。
    • 对不起,我在之前的评论中没有看到您的回复。是的,有特定类型的代理服务器可以执行此操作,前提是客户端计算机的 CA 证书存储配置为确实接受官方 MITM。
    • 这正是 Fiddler 所做的。
    【解决方案2】:

    你有安装 python 吗?

    点安装mitmproxy

    mitmproxy -p 1234

    甚至给你一个video

    (顺便说一句,在 apt-get 更新后,我必须在 debian 挤压上 apt-get install python-lxml)

    【讨论】:

      【解决方案3】:

      Burp Suite(甚至免费版)允许您设置 SSL“代理”,它将为您的应用程序提供不同的证书,并为您解密(并显示)流量。如果您也想在 localhost 中使用服务器进行测试,它也允许您设置代理(这是我在 Windows 中的 Wireshark 和 Fiddler 中无法做到的)。

      【讨论】:

        【解决方案4】:

        如果您无权访问服务器的私钥,则无法查看 SSL/TLS 保护的内容。 (至少你会看到最初的握手。)

        如果您可以完全控制客户端,则可以编写一个假服务器,该服务器将拥有您控制的私钥和证书,并将客户端发送的所有内容中继到实际服务器。为此,您需要让客户端信任您自己的证书,因此您需要控制客户端。调整客户端上相应的 hosts 文件以执行 DNS 欺骗可能更容易,以便将正确主机名的连接转到您的假服务器。

        【讨论】:

          猜你喜欢
          • 2020-07-05
          • 2018-05-12
          • 2010-09-13
          • 1970-01-01
          • 1970-01-01
          • 2017-03-14
          • 2017-08-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多