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

1. 设置环境变量

macOS / Linux

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

WindowsPowerShell):

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

WindowsCMD):

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 导出

  • 菜单栏:FileSave 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 中 FileOpen

  1. 菜单栏:EditPreferences(或快捷键 ⌘,)
  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 请求和响应,说明解密成功。

相关推荐
157092511341 小时前
Android进阶之光:HTTP协议原理深度解析
android·网络协议·http
可爱系程序猿5 小时前
WSD 打印机时好时坏:从发现服务、地址变化到 Standard TCP/IP 端口的迁移记录
网络·网络协议·tcp/ip·程序人生·电脑
2501_916008899 小时前
全平台抓包工具,Windows、iPhone、Linux三个平台抓包测试
网络协议·计算机网络·网络安全·ios·adb·https·udp
szephyr10 小时前
Nginx 反向代理实战:从 502、跨域到 HTTPS,一次打通
运维·nginx·https·部署·反向代理
努力的lpp11 小时前
【攻击溯源四步法 · 面试讲解稿】
网络·网络协议·安全
cccc卌11 小时前
HTTP协议总结
网络·网络协议·http
2501_9159184111 小时前
怎么把 Python 写的 Flet 应用打包成 iOS App 并上架 App Store?
android·ios·小程序·https·uni-app·iphone·webview
明月_清风13 小时前
MHS:AI Agent 开始连接物理世界
人工智能·后端·网络协议
鱼听禅13 小时前
C# 学习笔记-使用 类型化客户端搭建HTTP客户端服务
学习·http·c#·工厂方法模式
爱学习的程序媛14 小时前
TCP / UDP 协议详解
网络·网络协议·udp·tcp·通信协议