首页/网络/抓包与流量分析速查/密钥日志解密抓包
应用层报文判读71 条

密钥日志解密抓包

把会话密钥写入日志供离线解密:浏览器或部分客户端设置环境变量后,Wireshark 指定该文件即可看到明文应用数据。

密钥日志能打开什么

密钥日志是客户端提供的调试能力:把每个会话的密钥材料写进本地文件,抓包工具加载这份文件后就能离线解密会话内容,看到明文的应用数据。它解决了加密流量不可读的问题,但前提有三条——客户端本身支持该能力、日志与抓包在时间上对应、以及日志文件被完整保留。由于日志内容等价于会话凭据,只能在受控环境按需开启,用完及时清理。

基本信息

适用平台支持该能力的客户端与本机工具链;抓包工具侧做解密
启用方式设置环境变量指向日志文件后重启目标程序
工具配置在协议的预设主密钥日志设置中指定该文件
前提日志与抓包时间对应,客户端支持该能力

典型使用场景

  • 排查加密接口的请求响应内容问题
  • 验证客户端与服务端在加密层的字段一致性
  • 分析新版本协议下不可见的证书与握手扩展
  • 核对网关对加密请求的改写行为
  • 在受控测试环境复现线上问题
  • 为接口联调提供明文对照材料

启用步骤

启用步骤
export SSLKEYLOGFILE=/tmp/keys.log        # 指定日志文件位置
# 重启目标应用使其生效,再开始抓包
# 在抓包工具中指定该日志文件,随后即可看到明文
# 顺序要求: 先设变量并重启应用,再抓包,最后加载日志
# 日志与抓包批次不一致时会解不开,需成对保留

检查项逐项读法

检查项说明常见问题
客户端是否支持并非所有客户端都提供该能力不支持的客户端无法用此法解密
日志是否生成文件应有内容且持续写入环境变量未作用于目标进程时为空
时间是否对应日志覆盖抓包的时间段批次混用会导致部分会话解不开
解密结果应用数据是否可读仍不可读需核对协议版本与协商结果
密钥日志等价于会话凭据,必须按敏感数据处理:限定保存位置、控制访问权限、排查结束后及时删除,不要提交到代码仓库或工单附件。
没有密钥日志时,较新版本协议握手之后的内容本来就不可解,这属于正常现象,不必当作抓包异常。

易错点

  • 以为所有客户端都能导出密钥:该能力依赖客户端实现,不支持的场景需要换观测手段
  • 密钥日志与抓包时间错位:批次不一致会解不开,成对保存是最基本要求
  • 把不可解密当成抓包故障:较新版本协议加密握手内容属协议设计,不是工具问题
  • 密钥日志随手留存:文件泄露等于会话被看穿,必须限定权限并按敏感数据清理

数据来源与参考

  • Wireshark User's Guide(TLS 解密)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌