当前位置: 首页 > news >正文

用 Wireshark 在 Firefox 或 Google Chrome 上使用 SSLKEYLOGFILE 环境变量解密 SSL 流量

原文:这

您希望使用 SSL 会话密钥解密和检查 SSL 应用程序数据。
您希望在客户端系统上记录 SSL 会话密钥。
您正在客户端系统上使用 Firefox 或 Google Chrome 浏览器来访问 Web 应用程序。
注意:您还可以在客户端系统上使用 Microsoft Edge (Chromium) 浏览器访问 Web 应用程序。

描述
您可以使用 SSL 会话密钥解密 SSL 流量。执行此操作的一种方法是将 SSLKEYLOGFILE 环境变量设置为客户端操作系统上的文件名,以记录 SSL 密钥信息。此方法在以下任何情况下都很有用:

出于安全原因,您只能记录一个用户的 SSL 会话密钥。
您无权访问 BIG-IP 系统,或者不想在 BIG-IP 系统上运行命令。
您可以使用此方法解密 RSA 以及基于 Diffie-Hellman 的密钥交换(如 DHE 或 ECDHE)。

记录 SSL 会话密钥的其他方法是使用 K10209:使用 ssldump 实用程序进行数据包跟踪概述中描述的 ssldump 命令,或使用 K16700:使用 SSL::sessionsecret iRules 命令 (11.6.x) 解密 SSL 流量中描述的 iRules。

先决条件

必须满足以下先决条件才能使用此过程:

您正在客户端系统上使用 Firefox 或 Chrome 浏览器来访问 Web 应用程序。
在客户端系统上安装了 Wireshark。
程序

要在使用 Firefox 或 Chrome 时通过设置 SSLKEYLOGFILE 环境变量来解密 SSL 流量,请根据计算机的操作系统执行以下两个过程:

通过设置 SSLKEYLOGFILE 环境变量,在以下客户端系统之一上记录 SSL 会话密钥:
在 Windows 上记录 SSL 会话密钥
在 Mac 上记录 SSL 会话密钥
在 Linux 上记录 SSL 会话密钥
在 Wireshark 中加载 SSL 密钥日志文件
在 Tshark 中加载 SSL 密钥日志文件(Wireshark 的命令行版本)
注意:本文介绍如何使用 Wireshark 应用程序在数据包捕获中解密 SSL 应用程序数据;但是,您不必使用 Wireshark 来收集初始数据包捕获。有关详细信息,请参阅 Wireshark.org。此链接会将您带到 AskF5 之外的资源,并且可能会在我们不知情的情况下删除该文档。

重要提示:F5 支持 BIG-IP 系统软件。F5 不支持第三方软件,例如客户端操作系统或安装在客户端系统上的非 F5 应用程序。有关详细信息,请参阅操作系统手册。

有关这些过程的简要演示,请观看以下视频:

在 Windows 上记录 SSL 会话密钥

要通过设置 SSLKEYLOGFILE 在 Windows 上记录 SSL 会话密钥,请执行以下过程:

程序影响: 执行以下过程不应对系统产生负面影响。

登录到 Windows。
关闭所有 Firefox 和 Chrome 浏览器。
通过选择屏幕左下角的 Windows 图标来打开环境变量。
输入 env。
选择编辑帐户的环境变量。
在“环境变量”弹出窗口中,在“<用户名>的用户变量”下,选择“新建”。
对于 Variable name (变量名称),输入以下名称:
SSLKEYLOGFILE

对于 Variable value (变量值),输入 SSL 日志文件的完整路径名。
例如:

C:\Users\user1\Desktop\sslkeylog.txt

注意:您必须对输入的位置具有写入权限。

选择“确定”。
使用 Wireshark 等应用程序启动数据包捕获。
启动 Firefox 或 Chrome。
访问 Web 应用程序并执行要进行故障排除的步骤。执行此操作时,SSL 会话密钥将记录在步骤 8 中指定的文件中。
停止数据包捕获并将文件保存到客户端系统。
注意:在Wireshark中执行上传SSL密钥日志文件过程并查看解密的数据包捕获文件后,可以删除SSL日志文件以还原更改。

在 Mac 上记录 SSL 会话密钥

要通过设置 SSLKEYLOGFILE 在 Mac 上记录 SSL 会话密钥,请执行以下过程:

程序影响:执行以下过程不应对系统产生负面影响。

登录 Mac。
确保所有 Firefox 和 Chrome 浏览器都已关闭。
注意:在 Mac 中,应用程序可能会在后台运行。您必须使用屏幕左上角 Apple 菜单中的“强制退出”来强制退出应用程序。

启动 OS X 终端以进行命令行访问。
使用以下命令语法为您的帐户设置 SSLKEYLOGFILE 环境变量:
导出SSLKEYLOGFILE=“/Users/<account_name>/sslkeyfile”

例如:

导出 SSLKEYLOGFILE=“/Users/user1/sslkeyfile”

使用 Wireshark 或 tcpdump 等应用程序启动数据包捕获。使用以下命令在 Mac 上打开 Wireshark 应用程序,然后开始捕获:
打开 /Applications/Wireshark.app

有关 tcpdump 的信息,请参阅 K411:使用 tcpdump 实用程序进行数据包跟踪概述。
使用以下命令语法从同一终端启动 Firefox 或 Chrome:
打开 /Applications/

注: 您必须从同一命令终端启动浏览器,因为会话变量仅在终端上设置。

例如:

打开 /Applications/Firefox.app

访问 Web 应用程序并执行要进行故障排除的步骤。执行此操作时,SSL 会话密钥将记录在步骤 4 中指定的文件中。
停止数据包捕获并将文件保存到客户端系统。
注意:在Wireshark中执行上传SSL密钥日志文件过程并查看数据包解密的捕获文件后,可以通过输入以下命令删除SSL日志文件以还原更改:export SSLKEYLOGFILE=“”。

在 Linux 上记录 SSL 会话密钥

要通过设置 SSLKEYLOGFILE 在 Linux 上记录 SSL 会话密钥,请执行以下过程:

程序影响:执行以下过程不应对系统产生负面影响。

登录 Linux。
关闭所有 Firefox 和 Chrome 浏览器。
打开用于命令行访问的终端。
使用以下命令语法为您的帐户设置 SSLKEYLOGFILE 环境变量:
导出 SSLKEYLOGFILE=“/home/<account_name>/sslkeyfile”

例如:

导出 SSLKEYLOGFILE=“/home/user1/sslkeyfile”

使用 Wireshark 或 tcpdump 等应用程序启动数据包捕获。有关 tcpdump 的信息,请参阅 K411:使用 tcpdump 实用程序进行数据包跟踪概述。
从同一终端启动 Firefox 或 Chrome。
例如:

Firefox 和

注: 您必须从同一命令终端启动浏览器,因为会话变量仅在终端上设置。

访问 Web 应用程序并执行要进行故障排除的步骤。执行此操作时,SSL 会话密钥将记录在步骤 4 中指定的文件中。
停止数据包捕获并将文件保存到客户端系统。

注意:在 Wireshark 中执行上传 SSL 密钥日志文件过程并查看解密的数据包捕获文件后,可以通过输入以下命令删除 SSL 日志文件以还原更改:export SSLKEYLOGFILE=“”。
在 Wireshark 中加载 SSL 密钥日志文件

在客户端系统上打开 Wireshark。
转到编辑>首选项>协议> TLS。
注意:对于低于 3.0.0 的 Wireshark 版本,请转到编辑>首选项>协议> SSL。对于 Mac,请转到 Wireshark >首选项>协议> TLS。

对于“(Pre)-Master-Secret”日志文件名,请选择“浏览”并找到您创建的 SSL 日志文件。
选择“确定”。
在 Wireshark 中打开数据包捕获文件。
在 Wireshark 数据包窗口中,选择以前加密的数据包以查看未加密的应用程序数据。
在 Tshark(Wireshark 的命令行版本)中加载 SSL 密钥日志文件

在 Tshark 命令行上指定 tls.keylog_file: 选项。例如:
tshark -o ‘tls.keylog_file:日志文件.pms’ -r capture.pcap

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言面试
  • webpack的简单使用
  • python---类与对象
  • 2023 全栈工程师 Node.Js 服务器端 web 框架 Express.js 详细教程(更新中)
  • security实战
  • ActiveMQ、RabbitMQ、RocketMQ、Kafka介绍
  • java项目之个人健康信息管理(ssm+jsp)
  • kubernetes存储-volumes
  • 各种NoSQL数据库
  • CSAPP第4章:RISC和CISC指令集
  • [POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度)
  • could not read ok from ADB Server
  • linux生产者消费者模型
  • 大语言模型(LLM)综述(六):大型语言模型的基准和评估
  • 基于springboot+vue的影城管理系统
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS7 安装JDK
  • Effective Java 笔记(一)
  • hadoop集群管理系统搭建规划说明
  • iOS 系统授权开发
  • js对象的深浅拷贝
  • Vue 2.3、2.4 知识点小结
  • 复习Javascript专题(四):js中的深浅拷贝
  • ------- 计算机网络基础
  • 面试总结JavaScript篇
  • 我从编程教室毕业
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • "无招胜有招"nbsp;史上最全的互…
  • ######## golang各章节终篇索引 ########
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014#Day.2 T3 解方程
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4) PIVOT 和 UPIVOT 的使用
  • (C#)获取字符编码的类
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)我也是一只IT小小鸟
  • *p++,*(p++),*++p,(*p)++区别?
  • *上位机的定义
  • .net core 依赖注入的基本用发
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET和.COM和.CN域名区别
  • .NET与 java通用的3DES加密解密方法
  • .Net中间语言BeforeFieldInit
  • .net专家(高海东的专栏)
  • :O)修改linux硬件时间
  • @RequestMapping处理请求异常
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题
  • [] 与 [[]], -gt 与 > 的比较
  • [].slice.call()将类数组转化为真正的数组
  • [51nod1610]路径计数