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 请求和响应,说明解密成功。

相关推荐
treesforest44 分钟前
随意装软件也会被恶意IP入侵电脑?
网络·网络协议·tcp/ip·网络安全·ip属地·查ip归属地
可爱系程序猿10 小时前
网络打印机地址正常却无法出纸:从 TCP/IP 端口到 Print Spooler 的排错步骤
网络·网络协议·tcp/ip
liulilittle15 小时前
UCP 控制协议 [简述]
网络·网络协议·计算机网络·udp·ip·通信
Yan_chen66618 小时前
SSH(Secure Shell)安全外壳协议详解
运维·网络协议·ssh
GIR12320 小时前
研究更新:2026年网络协议分析工具发展前景与竞争格局报告(附市场占有率与产业链图谱)
网络·网络协议
半支烟隐 pzishuo1 天前
HTTP Live Streaming(HLS)直播技术分析与实现
网络·网络协议·http
Alexon Xu1 天前
Java中的HTTP组件全方位对比
http
2501_915921431 天前
详细解析,iOS 应用上架 App Store 的完整流程与指南
android·ios·小程序·https·uni-app·iphone·webview
颜挺锐1 天前
JMeter TCP 取样器 行尾字节值是 62,是代表的什么意思?
网络协议·tcp/ip·jmeter