Security ❀ Https TLS抓包操作与解密配置

1. 设置环境变量

macOS / Linux:

bash 复制代码
export SSLKEYLOGFILE="$HOME/sslkeylog.log"

Windows (PowerShell):

powershell 复制代码
$env:SSLKEYLOGFILE = "$env:USERPROFILE\sslkeylog.log"

Windows (CMD):

powershell 复制代码
set SSLKEYLOGFILE=%USERPROFILE%\sslkeylog.log

设置后,Chrome / Firefox / curl 等程序在建立 TLS 连接时,会自动将会话密钥追加写入该文件。

2. 流量触发

在设置了 SSLKEYLOGFILE 的同一终端中发起请求:

bash 复制代码
curl -v <https://www.example.com>

或者打开 Chrome 浏览器访问目标 HTTPS 网站(需在同一终端中启动 Chrome)。

macOS 从终端启动 Chrome:

bash 复制代码
open -a "Google Chrome" <https://www.example.com>

或者直接打开浏览器 App 进行页面访问

3. 抓包说明

3.1 Tcpdump

bash 复制代码
# 抓取所有 HTTPS 流量(端口 443),保存到 capture.pcap
sudo tcpdump -i any -w capture.pcap port 443

# 只抓特定网卡(如 en0),加 -s0 抓完整报文
sudo tcpdump -i en0 -s0 -w capture.pcap port 443

# 只抓特定主机
sudo tcpdump -i any -s0 -w capture.pcap host www.example.com and port 443
参数 含义
-i any 监听所有网卡
-i en0 指定网卡(ifconfig 查看)
-s0 抓取完整报文(不截断)
-w capture.pcap 写入文件
port 443 只抓 HTTPS
host x.x.x.x 只抓特定 IP

抓完后按 Ctrl + C 停止。

确认两个文件都已生成:

bash 复制代码
ls -la capture.pcap    # 抓包文件
ls -la ~/sslkeylog.log # 密钥文件

3.2 Wireshark

  • 下载:https://www.wireshark.org/
  • macOS 也可以通过 Homebrew:brew install --cask wireshark

启动 Wireshark → 双击要监听的网卡(如 en0 / Wi-Fi)。

在抓包页面上方的过滤器输入框中填入:tcp port 443

然后点击左上角「鲨鱼鳍」图标开始抓包,点击红色方块停止抓包。

4. 导出抓包文件

4.1 从 tcpdump 导出

tcpdump 抓包时已用 -w 直接写入 .pcap 文件,直接使用即可。

4.2 从 Wireshark 导出

  • 菜单栏:File → Save As...
  • 格式选择:Wireshark/tcpdump/... - pcapng(默认)
  • 可勾选 Displayed 只导出当前显示的数据包(过滤后导出更小体积)

4.3 从远程服务器下载

如果在服务器上用 tcpdump 抓包:

bash 复制代码
# SCP 下载到本地
scp user@server:/path/to/capture.pcap /Users/zuoxuchen/Desktop/File/
scp user@server:/path/to/sslkeylog.log /Users/zuoxuchen/Desktop/File/

5. 在Wireshark中配置解密文件

双击 capture.pcap 用 Wireshark 打开,或在 Wireshark 中 File → Open。

  1. 菜单栏:Edit → Preferences(或快捷键 ⌘,)
  2. 左侧展开:Protocols → 找到 TLS(或直接搜索 TLS)
  3. 在右侧找到 (Pre)-Master-Secret log filename
  4. 点击 Browse,选择之前生成的 sslkeylog.log 文件
  5. 点击 OK 保存

配置完成后,Wireshark 会立即重新解析报文:

  • 已解密的 HTTPS 报文会显示完整的 HTTP 请求/响应内容
  • 在报文详情中可看到 Decrypted TLS 标签
  • 可直接查看 HTTP Header、Body 等明文数据

在 Wireshark 过滤器栏输入: http ,如果能看到 HTTP 请求和响应,说明解密成功。

相关推荐
XiaoMaqqqq10 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
ShyanZh10 小时前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp
Lsetea11 小时前
OpenSSL verify报unhandled critical extension:error 34与关键扩展排查
运维·https·ssl证书·openssl·证书链
DP DPharness12 小时前
StudyMate 从安装到第一节课的完整操作路径
人工智能·websocket·网络协议·智能手机·dpharness
剑锋所指,所向披靡!16 小时前
HTTP服务器的基本相关概念
服务器·网络协议·http
2301_7779983416 小时前
TCP协议:滑动窗口与流量控制
服务器·网络·网络协议·tcp/ip·php
Lsetea18 小时前
OpenSSL verify报CA certificate key too weak:auth_level与弱密钥链排查
运维·https·ssl证书·openssl·证书链
wangbing112518 小时前
开发指南148-WebSocket-前端查报文
网络·websocket·网络协议
liangshanbo121521 小时前
前端高级面试题:WebSocket 双向流式通信怎么设计?
前端·websocket·网络协议
可乐鸡翅yeah_21 小时前
新手梳理:HLS 线上问题,哪些该提给 CDN,哪些该找后端切片服务
开发语言·前端·javascript·vue.js·网络协议·http·m3u8在线