• 使用 Wireshark 调试 HTTPS请求


    前言

    从我的这篇博客前端也需要深度了解HTTPS协议可以知道。https协议是通过tls加密套算法保护下的http协议;传统的wireshark抓包,可以清楚的看到http协议每次交互的报文和内容,但是对于加密的https,实际通信是基于非对称加密算法后,在对称算法加密通道内的报文。在不知道生成的私钥情况下,是无法获取报文内容的;可以看到一般是这样的

    在这里插入图片描述
    本文就介绍一下,如何破解传输包的实际报文;

    关于Wireshark 的抓包原理

    我们知道 HTTP 抓包工具 Fiddler 是通过开启本地代理进行抓包的,它能够解密 HTTPS 流量的原理很简单:首先 Fiddler 作为客户端跟服务端建立 TLS 连接,使用服务端的证书,处理请求和响应;然后 Fiddler 又作为服务端跟浏览器建立 TLS 连接,使用 Fiddler 的证书,处理请求和响应。所以 Fiddler 要解密 HTTPS 流量,需要先把它生成的根证书添加到系统受信任的根证书列表之中。

    Wireshark 的抓包原理是直接读取并分析网卡数据,要想让它解密 HTTPS 流量,有两个办法:1)如果你拥有HTTPS 网站的加密私钥,可以用来解密这个网站的加密流量;2)某些浏览器支持将 TLS 会话中使用的对称密钥保存在外部文件中,可供 Wireshark 加密使用。本文重点介绍第二种方法。

    让浏览器把与网站交互的秘钥存在本地

    Firefox 和 Chrome 都支持生成上述第二种方式的文件,具体格式见这里:NSS Key Log Format。但 Firefox 和 Chrome 只会在系统环境变量中存在 SSLKEYLOGFILE 路径时才会生成它,先来加上这个环境变量(以 OSX 为例):

    mkdir ~/tls && touch ~/tls/sslkeylog.log
    
    #zsh
    echo "\nexport SSLKEYLOGFILE=~/tls/sslkeylog.log" >> ~/.zshrc && source ~/.zshrc
    
    #bash
    echo "\nexport SSLKEYLOGFILE=~/tls/sslkeylog.log" >> ~/.bash_profile && . ~/.bash_profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    windows:亲测需要三步

    • 高级设置->环境变量,设置SSLKEYLOGFILE的路径;

    • 打开一个新的cmd窗口,

    set SSLKEYLOGFILE=D:/tlstest/sslkeylog.txt
    
    • 1
    • 设置完成后,在这个cmd窗口中 打开chrome或者FF浏览器,保证浏览器能够读取到环境变量;

    同时访问任何一个https网站,观察是否生成了对应文件并产生内容;如果生成内容,进入下一步;

    让wireshark读取这个秘钥文件

    WiresharkSSL 配置面板的 「(Pre)-Master-Secret log filename」选项中这个文件选上(编辑->=首选项->协议)。如下图

    在这里插入图片描述

    注意,这是老版本的wireshark,如果发现没有SSL选项,则选择TLS,新版本的是TLS;但是配置是一样的;

    SSL debug file」也建议配上,这样解密过程中的日志都会记录下来,便于调试。

    新版 Wireshark 在配置了 TLS 加密后,会自动识别并解析 HTTPS 流量。访问想要抓包的 HTTPS 网站,根据 IP 和协议过滤一下,就可以轻松看到想要的 HTTPS 数据包了。如下图:

    在这里插入图片描述

    问题

    • 如果谷歌浏览器不行,那么请尝试FF;如果FF不行,打开about:config,设置NSS_ALLOW_SSLKEYLOGtrue
    • 如果怎么都不行,尝试升级wireshark到最新版本,并且在命令行启动它;
  • 相关阅读:
    C语言第十二课(中):操作符详解【单目、关系、逻辑、条件操作符】
    前端(十六)——Web应用的安全性研究
    REST会消失吗?事件驱动架构如何搭建?
    【我的机器学习之旅】打造个性化手写汉字识别系统
    uniapp踩坑
    C# Winform编程(9)网络编程
    Python 实现自动化测试 dubbo 协议接口
    12个有效降低论文重复率的实用策略分享
    Redis-使用jedis连接linux中redis服务器失败的解决方案
    计算机毕业设计之微信小程序美容理发店预约系统app
  • 原文地址:https://blog.csdn.net/qq_29722281/article/details/126474448