首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >让WireShark显示HTTPS加密数据(无需私钥)

让WireShark显示HTTPS加密数据(无需私钥)

作者头像
YaoQi
发布2025-07-14 18:55:37
发布2025-07-14 18:55:37
20500
代码可运行
举报
运行总次数:0
代码可运行

HTTPS是使用TLS对HTTP进行加密,过程中使用了非对称加密和对称加密算法。

早期的HTTPS一种实现过程:

  1.  客户端通过DNS解析出服务器IP,向服务器发起HTTPS请求。
  2. 服务器根据客户端访问的域名,返回对应的证书(包含非对称加密公钥)
  3. 客户端验证证书,通过后生成一个密钥,用公钥加密后发给服务端。
  4. 服务端用私钥解密,获得对称加密的密钥,然后用此密钥进行最后的数据加密通信。

这种方式下,通过抓包,可以获得公钥,如果手里也有服务器上的私钥,就能解密出对称加密的密钥,进而也就能解密出最后的通信内容。因此服务端私钥一定要妥善保存不要

但是,当前HTTPS并不是直接用公钥加密对称加密阶段的密钥,而是使用如Diffie-Hellman (DH)密钥交换算法,这时密钥通过计算得出,中间抓包是无法获取最终加密密钥的。

因此只是给WireShark配置服务器私钥是不能解开所有HTTPS的。

因此要想解开HTTPS内容,必须客户端配合,给你对称加密时的密钥。

答案是:配置环境变量 SSLKEYLOGFILE 

此环境变量的内容是个文件路径,当设置SSLKEYLOGFILE环境变量时,TLS的底层库(NSS、OpenSSL或boringssl)将每个会话所需的密钥写入文件。随后可以在Wireshark中配置此文件。

具体的操作过程如下:

一、配置WireShark

在桌面创建一个keylogfile.txt文件

打开WireShark--》编辑--》首选项--》协议(Protocols)--》TLS(旧版本是SSL)

在(Pre)-Master-Secret log filename项,配置文件地址:

图片
图片

二、配置环境变量,启动浏览器

关掉你所用浏览器的所有实例,然后编写如下脚本,此脚本中的firefox可以按需改成chrome:

Windows:

代码语言:javascript
代码运行次数:0
运行
复制
@echo off
set SSLKEYLOGFILE=%USERPROFILE%\Desktop\keylogfile.txt
start firefox

MacOS:

代码语言:javascript
代码运行次数:0
运行
复制
export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt
open -a firefox

Linux:

代码语言:javascript
代码运行次数:0
运行
复制
export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt
firefox

注:使用脚本临时配置环境变量,防止忘记关闭,引发安全问题。

接下来,运行脚本,启动浏览器,访问HTTPS网站。

图片
图片

这时打开keylogfile.txt文件可以看到如下内容:

图片
图片

打开WireShark抓包,按某个网站的IP筛选数据包:

图片
图片

可以看到,HTTP的数据已经可以查看了,否则你只能看到TLS层:

参考:

https://wiki.wireshark.org/TLS#using-the-pre-master-secret

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漫跑的小兔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档