我有一个与远程Web服务对话的本地应用程序(我没有写,也无法更改)。它使用HTTPS,我想看看流量中有什么。
我有什么方法可以做到这一点?我更喜欢Windows系统,但如果能让事情变得简单,我很乐意在Linux上设置代理。
我正在考虑的事情:
这听起来合情合理吗? WireShark能否真正看到HTTPS流量中的内容?任何人都可以指向合适的代理(并配置相同的代理)吗?
答案 0 :(得分:13)
Fiddler能做你想做的吗?
Fiddler是什么?
Fiddler是一个Web调试代理 记录您之间的所有HTTP(S)流量 电脑和互联网。提琴手 允许您检查所有HTTP(S) 交通,设置断点和“小提琴” 传入或传出数据。 提琴手包括一个强大的 基于事件的脚本子系统,以及 可以使用任何.NET扩展 语言。
Fiddler是免费软件,可以调试 来自几乎所有的交通 应用程序,包括Internet 资源管理器,Mozilla Firefox,Opera和 还有数千人。
答案 1 :(得分:8)
Wireshark绝对可以将TLS / SSL加密流显示为纯文本。但是,您肯定需要服务器的私钥才能这样做。私钥必须作为首选项下的SSL选项添加到Wireshark。请注意,这仅在您可以从一开始就遵循SSL流时才有效。如果重用SSL连接,它将无法工作。
对于Internet Explorer,可以通过使用“Internet选项”对话框清除SSL状态来避免此问题(SSL会话重用)。其他环境可能需要重新启动浏览器甚至重新启动系统(以避免重用SSL会话)。
另一个关键约束是必须使用RSA密码。 Wireshark无法解码使用DFH(Diffie-Hellman)的TLS / SSL流。
假设您可以满足上述约束,“Follow SSL Stream”右键单击命令可以很好地工作。
答案 2 :(得分:4)
您需要为本地应用程序设置代理,如果它不遵守代理设置,请在外出之前放置透明代理并将所有https流量路由到其中。这样的事情可能是中间的“男人”:http://crypto.stanford.edu/ssl-mitm
此外,这里有关于如何使用wireshark存档的简要说明:http://predev.wikidot.com/decrypt-ssl-traffic
答案 3 :(得分:2)
您还应该考虑Charles。从本回答时的产品说明:
Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看其计算机和Internet之间的所有HTTP和SSL / HTTPS流量。这包括请求,响应和HTTP标头(包含cookie和缓存信息)。
答案 4 :(得分:0)
使用https代理进行监控,取决于握手的类型。如果您的本地应用程序没有通过CA签名检查服务器的证书,您无法伪造,并且服务器不检查您的本地应用程序的证书(或者如果您有一个要在https代理上设置),那么您可以设置https代理到监控https流量。否则,我认为用https代理监控流量是不可能的。
您可以尝试的另一种方法是在客户端程序的例程中添加检测探针,以便从其https库发送和接收消息。它需要一些逆向工程工作,但应该适合所有情况。
答案 5 :(得分:0)
我会推荐WireShark,它是跟踪不同流量的最佳工具。虽然,我不确定在启用SSL时你能看到什么。也许,如果你提供证书?