问题 如何调试ssl连接?


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

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

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

提前致谢。


8845
2018-06-14 13:29


起源



答案:


看到这个: 调试SSL通信

理论上我知道它可以完成 - 您可以设置与目标Web服务通信的代理,指向您的应用程序通过此代理连接。它是一个已知的限制 - Https假定您信任计算机上安装的所有代理和证书。它的一种形式 中间人攻击

看看 提琴手 会有一些用处。

中间人攻击

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


4
2018-06-14 13:37



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


答案:


看到这个: 调试SSL通信

理论上我知道它可以完成 - 您可以设置与目标Web服务通信的代理,指向您的应用程序通过此代理连接。它是一个已知的限制 - Https假定您信任计算机上安装的所有代理和证书。它的一种形式 中间人攻击

看看 提琴手 会有一些用处。

中间人攻击

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


4
2018-06-14 13:37



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


你安装了python吗?

点子安装 mitmproxy

mitmproxy -p 1234

甚至一个 视频 为你

(顺便说一下,我必须在apt-get更新后在debian squeeze上安装apt-get install python-lxml)


4
2018-05-19 07:40





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


2
2017-12-05 20:35





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

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


0
2018-06-14 14:01