1、Fiddler抓取HTTPS过程

  • 第一步:Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler伪装成客户端向服务器发送请求进行握手 。
  • 第二步:服务器发回相应,Fiddler获取到服务器的CA证书, 用根证书(这里的根证书是CA认证中心给自己颁发的证书)公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥

    然后Fiddler伪造自己的CA证书(这里的CA证书,也是根证书,只不过是Fiddler伪造的根证书), 冒充服务器证书传递给客户端浏览器。(也就服务器发给客户端的证书被Fiddler留下了,伪造了一个证书发给客户端)
  • 第三步:与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key
  • 第四步:客户端将重要信息传递给服务器,又被Fiddler截获。

    Fiddler将截获的密文用自己伪造证书的私钥解开,获得并计算得到HTTPS通信用的对称密钥enc_key

    Fiddler将对称密钥用服务器证书公钥加密传递给服务器。
  • 第五步:与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端。
  • 第六步:Fiddler截获服务器发送的密文,用对称密钥解开,再用自己伪造证书的私钥加密传给客户端。
  • 第七步:客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了”信任“。

2、拓展:SSL/TLS证书握手原理

普及下SSL/TLS证书握手原理,SSL/TLS证书分为单向认证和双向认证,通过下面的两张图可以简单的了解一下原理。

单向认证:

双向认证:

3、Fiddler抓取HTTPS原理总结

Fiddler在之后的正常加密通信过程中,如何在服务器与客户端之间充当第三者呢?

服务器—>客户端:Fiddler接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文。再次加密,发送给客户端。

客户端—>服务端:客户端用对称密钥加密,被Fiddler截获后,解密获得明文。再次加密,发送给服务器端。由于Fiddler一直拥有通信用对称密钥enc_key, 所以在整个HTTPS通信过程中,信息对其透明。

4、Fiddler抓取HTTPS设置

因为Fiddler是一个HTTP代理服务,它位于客户端和服务器端之间,而安装好Fiddler的只可以对HTTP协议进行抓包。

如果需要对HTTPS的协议进行抓包分析,就需要对Fiddler工具进行配置,使得Fiddler工具也可以抓到HTTPS协议的包。

如果没有进行任何的配置就想用Fiddler来抓包分析是实现不了的,即使抓出来也是看不懂的加密内容。因为没有受信任的Fiddler根证书,不能让客户端相信Fiddler伪造的CA证书,从而得到Pre_master

步骤1:配置证书

Tools菜单 —> Options... —> HTTPS —> 勾选Decrypt HTTPS traffic

如下图:

说明

勾选Decrypt HTTPS traffic选项:意思是解密HTTPS流量(请求)。

然后会弹出一个对话框,如下图:

意思是:为了能够拦截HITTPS通信,Fiddler生成了唯一的根证书。您可以将Windows配置为信任此根证书,以禁止显示安全警告。单击“是”以重新配置Windows的受信任CA列表。

然后接着弹出对话框如下:点击是,确认安装此证书。

是否确认将证书添加到计算机根目录列表?点击是。

最后提示:成功将Fiddler的根证书添加到计算机根列表中。

步骤2:勾选设置

当勾选Decrypt HTTPS traffic选项的时候,会提示你安装证书,安装好证书之后,HTTPS选项界面如下:

我们在继续勾选Ignore server certificate errors (unsafe)选项:忽略服务器证书错误(不安全)。

之后点击OK就可以抓取HTTPS的请求了(我试过了不需要重启)。

5、查看证书是否安装成功

方式一

点击Tools菜单 —> Options... —> HTTPS —> Actions

选择第三项:Open Windows Certificate Manager打开Windows证书管理器。

打开Windows证书管理器,选择操作—>查看证书,在搜索框中输入Fiddler来查看证书。

查看结果:

然后可以选择一个证书,进行打开、删除、导出等操作。

方式二

WIN+R打开电脑命令提示符,输入certmgr.msc并回车,打开Windows证书管理器。

然后选择操作 —> 查看证书,之后的步骤同上。

6、HTTPS选项界面说明

HTTPS选项界面如下:

详细说明

  • Fiddler can decrypt HITTPS sessions by re-signing traffic using self-generated certificates.

    Fiddler可以使用自行生成的证书对流量进行重新签名,从而对HITTPS会话进行解密。
  • Capture HTTPS CONNECTs:建立HTTPS连接通信。

    这个就是我们之前常看到有tunnel to...443请求的原因,他是HTTPS建立通信时候所发出的请求。

    我们使用Rules菜单 —> Hide CONNECTs操作,把这些请求隐藏了。
  • Decrypt HTTPS traffic:解密HTTPS请求。
  • 下拉列表

    from all processes : 抓取所有的HTTPS程序, 包括本机和手机 。

    from browsers only : 只抓取浏览器中的HTTPS请求。

    from non-browsers only : 只抓取除了浏览器之外的所有HTTPS请求。

    from remote clients only : 抓取远程的客户端的HTTPS,可以代表手机。
  • Ignore server certificate errors (unsafe):忽略服务器证书错误(不安全)

    一般勾选上。
  • check for certificate reyocation:检查证书吊销。
  • Certificates generated by CertEnroll engine:由CertEnroll引擎生成的证书。
  • Skip decryption for the following hosts:跳过以下主机的解密。
  • Actions
    • Trust Root Certificate:信任根证书。
    • Export Root Certificate to Desktop:将根证书导出到桌面。
    • Open Windows Certificate Manager:打开Windows证书管理器。
    • Learn More about HTTPS Decryption:了解有关HTTPS解密的更多信息。
    • Remove Interception Certificates:删除拦截证书。
    • Reset All Certificates:重置所有证书。

7、无法抓取HTTPS请求

我们在完成上面Fiddler配置后,还是无法抓取HTTPS请求。

我们可以点击Tools菜单 —> Options... —> HTTPS —> Actions

选择最后一个选项Reset All Certificates:重置所有证书。

提示:Fiddler将删除所有拦截证书,并重新创建新的根证书以用于解密流量。

选择确定。

确定是否删除证书:选择是。

提示:Fiddler生成的证书已从“当前用户”存储中删除。

点击确定。之后Fiddler会自动弹出证书的安装,同上面第4点的步骤一。

如果还不行,可以再点击第一个选项Trust Root Certificate:信任根证书。

之后会安装一些Fiddler的相关证书,这样基本上可以解决Fiddler无法抓取HTTPS请求的情况。

8、Firefox浏览器中捕获HTTPS请求

Google浏览器和IE浏览器默认使用的网络代理是系统代理,当Fiddler开启后,会自动替换掉系统代理,这样Google浏览器和IE浏览器自动就可以抓取到HTTPS的请求。

Firefox浏览器与其它浏览器有所不同,它默认不使用系统代理,该浏览器需要自己设置代理和安装证书,Fiddler才可以抓到HTTPS。

(1)查看Firefox浏览器的网络代理

选择Firefox右上角三条横线 —> 选项 —> 网络设置(版本不同位置不同,有的在高级里,有的在常规里)

点击“设置”,出现如下界面:

提示:新版本默认选择使用系统代理设置,旧版本自己查看一下,不是的话修改一下。

这样的话,我们就可以进行HTTP请求的抓取了。(注意不是HTTPS请求)

我们也可以进行手动代理配置,要配置成Fiddler一样的地址和端口(请看Fiddler中Connections选项中的配置)

(2)配置Firefox浏览器的Fiddler证书

我们可以先通过Fiddler配置好抓取Google浏览器HTTPS请求,这样的话Fiddler证书已经安装在本机电脑中了。

新版本的Firefox浏览器,当我们打开浏览器的时候,Firefox会自动弹出页面,需要确认Fiddler证书。

我们点击高级,选择信任该证书即可。

现在我们就可以使用Fiddler抓取Firefox浏览器的HTTPS请求了。

补充:如果是旧版本的Firefox浏览器。

步骤1:我们需要点击Tools菜单 —> Options... —> HTTPS —> Actions

步骤2:选择第二项Export Root Certificate to Desktop:将根证书导出到桌面。

步骤3:然后选择Firefox右上角三条横线 —> 选项 —> 证书(版本不同位置不同,有的在高级里,有的在隐私与安全里)

步骤4:点击“查看证书”,点击导入证书,如下图:

步骤5:选择并打开文件后,会弹出个框,勾选三个选项,点击确定,完成配置。

步骤6:可以抓取Firefox浏览器发出的HTTPS请求了。如果不行重启Firefox浏览器和Fiddler试试。

9、总结:

无论什么浏览器,需要抓取HTTPS请求,都需要确保:

  • 确保浏览器使用网络是系统代理(主要就是把系统代理替换成Fiddler代理)。
  • 确保正确安装好Fiddler证书。

这样Fiddler就可以抓取到任何浏览器发送的HTTPS请求了。

『言善信』Fiddler工具 — 15、使用Fiddler抓取HTTPS请求的更多相关文章

  1. 『言善信』Fiddler工具 — 16、使用Fiddler抓取移动端App请求

    目录 1.抓取Android移动端App请求 2.抓取IOS移动端App请求 3.总结: 1.抓取Android移动端App请求 前提: 因为Fiddler抓包的原理就是通过代理,所以确保被测终端要和 ...

  2. 『言善信』Fiddler工具 — 1、Fiddler介绍与安装

    目录 1.Fiddler简介 2.Fiddler功能 3.Fiddler工作原理 (1)先来了解一下B/S架构 (2)Fiddler工作原理 (3)Fiddler工作原理进阶说明 (4)以Google ...

  3. 『言善信』Fiddler工具 — 2、HTTP请求内容详解

    目录 1.HTTP协议介绍 2.使用Fiddler抓取一个请求 3.НТТP请求报文 (1)НТТP请求报文说明 (2)请求行 (3)请求头(Request Header) (4)请求体 4.НТТР ...

  4. 『言善信』Fiddler工具 — 4、Fiddler面布局详解【工具栏】

    目录 (一)工具栏详细介绍 1.第一组工具: 2.第二组工具: 3.第三组工具: 4.第四组工具: (二)工具栏使用说明 1.Fiddler修改代理端口: 2.过滤Tunnel to...443请求链 ...

  5. 『言善信』Fiddler工具 — 3、Fiddler界面布局详解【菜单栏】

    目录 (一)Fiddler界面布局介绍 (二)菜单栏 1.File文件菜单: 2.Edit编辑菜单: 3.Rules规则菜单: 4.Tools工具菜单: 5.View视图菜单: 6.Help帮助菜单: ...

  6. 『言善信』Fiddler工具 — 6、Fiddler界面布局详解【命令行和状态栏】

    目录 1.命令行 2.状态栏 1.命令行 命令行在Fiddler的左下方的黑色窗口,也叫QuickExec,可以调用 Fiddler的内置命令. 这一系列内置的函数用于筛选和操作会话列表中的sessi ...

  7. 『言善信』Fiddler工具 — 5、Fiddler界面布局详解【会话列表】

    目录 1.会话列表说明 2.会话列表不同颜色的含义 3.会话列表图标说明 4.会话列表应用设置 (1)给Fiddler会话列表增加IP列 (2)添加自定义列 (3)添加完成请求时间 (4)其他操作 1 ...

  8. 『言善信』Fiddler工具 — 9、Fiddler自动响应器(AutoResponder)详解

    目录 1.AutoResponder介绍 2.AutoResponder界面说明 (1)选项: (2)按钮: (3)Rule Editor(规则编辑): (4)test(测试): (5)规则框: 1. ...

  9. 『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试

    目录 1.什么是弱网测试 2.弱网环境的影响 3.弱网环境测试场景 4.使用Fiddler进行弱网测试 (1)Fiddler模拟弱网环境 (2)设置弱网的参数 (3)进行弱网测试对比 (4)恢复设置 ...

随机推荐

  1. sharepoint列表如何进行随机取几条记录?

    sharepoint列表如何进行随机取记录?由于itemid是不连续.可能存在删除添加等操作导致 我们可以采用随机取第几条记录.把记录集合取出来.产生随机第几条数.这里关键是如何产生不重复的随机数 方 ...

  2. Linux(CentOS)系统下设置nginx开机自启动

    Nginx 是一个很强大的高性能Web和反向代理服务器.下面介绍在linux下安装后,如何设置开机自启动.首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:vi ...

  3. 如何设置DB2I(SPUFI)来正常工作

    首先确定你现在所使用的登录proc,确保有权限可以在对应的PDS内新建member,可以在s.st里面找userid对应的job,然后去serach using,基本可以找到对应的dataset 用t ...

  4. netty常用代码

    一. Server public class TimeServer_argu { public void bind(int port) throws InterruptedException { Ev ...

  5. 在Silverlight中的DispatcherTimer的Tick中使用基于事件的异步请求

    需求:在silverlight用户界面上使用计时器定时刷新数据. 在 Silverlight 中的 DispatcherTimer 的 Tick 事件 中使用异步请求数据时,会出现多次请求的问题,以下 ...

  6. 微软发布Xamarin Live Player:Win10可开发iOS

    微软在Build2017大会上发布一款名为Xamarin Live Player的全新工具,可以让PC用户在不使用Mac的前提下测试和调试iOS应用.但是向App Store提交应用时仍然需要Xcod ...

  7. Hibernate入门(二)——hibernateAPI详解

    Hibernate API 详解 1.Configuration 功能:配置加载类,用于加载主配置,orm元数据加载 .创建: Configuration conf = new Configurati ...

  8. linux——git安装使用

    系统环境centos7 安装git命令 yum install git -y 安装好之后使用命令查看git版本 git –version [root@bogon ~]# git --version g ...

  9. java 块语句 和引用类型

    1.java中存在块语句,块语句分为四种 1.静态块 2.普通块 3.构造块 4.同步块 静态块的执行时机是在class文件装载的时候;静态块只会执行一次, 多个静态块的时候,按出现顺序执行,存放类的 ...

  10. 二、Web框架实现

    一.简单web(socket) 在前一篇WEB框架概述一文中已经详细了解了:从浏览器键入一个URL到返回HTML内容的整个过程.说到底,本质上其实就是一个socket服务端,用户的浏览器其实就是一个s ...