为什么用抓包工具看HTTPS包是明文的
测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示。由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS 的包并显示呢?不是说 HTTPS 是加密传输的吗?
今天这篇文章就来探究下上面这个问题,要解释清楚这个问题,我会通过解答以下两个问题来讲述:
HTTPS 到底是什么? 抓包工具抓包的原理?
HTTPS 到底是什么
HTTP 作为一种被广泛使用的传输协议,也存在一些的缺点:
无状态(可以通过 Cookie 或 Session 解决); 明文传输; 不安全;
为了解决 “明文” 和 “不安全” 两个问题,就产生了 HTTPS。HTTPS 不是一种单独的协议,它是由 HTTP + SSL/TLS 组成。

所以要理解 HTTPS 就只需在 HTTP 的基础上理解 SSL/TLS (TLS 是 SSL 的后续版本,现在一般使用 TLS),下面就来了解下 TLS 是什么。
TLS
❝
「传输层安全性协议」(英语:「T」ransport 「L」ayer 「S」ecurity,缩写:「TLS」)及其前身「安全套接层」(英语:「S」ecure 「S」ockets 「L」ayer,缩写:「SSL」)是一种「安全协议」,目的是为互联网通信提供安全及「数据完整性」保障。
❞
TLS 由记录协议、握手协议、警报协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术。
「记录协议」 规定 TLS收发数据的基本单位为:记录。类似TCP里的segment,所有其它子协议都需要通过记录协议发出。「警报协议」 的职责是向对方发出警报信息,类似于 HTTP里的状态码。「握手协议」 是 TLS里最复杂的子协议,浏览器和服务器在握手过程中会协商TLS版本号、随机数、密码套件等信息,然后交换证书和密钥参数,最终双方协商得到会话密钥,用于后续的混合加密系统。「变更密码规范协议」 用于告知对方,后续的数据都将使用加密传输。
TLS 的握手过程:

握手过程抓包显示:


交换密钥的过程为:
客户端发起一个请求给服务器; 服务器生成一对非对称的公钥( pubkey)和私钥(privatekey),然后把公钥附加到一个CA数字证书上返回给客户端;客户端校验该证书是否合法(通过浏览器内置的厂商根证书等手段校验),然后从证书中提取出公钥( pubkey);客户端生成一个随机数( key),然后使用公钥(pubkey)对这个随机数进行加密后发送给服务器;服务器利用私钥( privatekey)对收到的随机数密文进行解密得到key;后续客户端和服务器传输数据使用该 key进行加密后再传输;
抓包工具抓包的原理
先来看看抓 HTTP 包的原理

首先抓包工具会提供出代理服务,客户端需要连接该代理; 客户端发出 HTTP请求时,会经过抓包工具的代理,抓包工具将请求的原文进行展示;抓包工具使用该原文将请求发送给服务器; 服务器返回结果给抓包工具,抓包工具将返回结果进行展示; 抓包工具将服务器返回的结果原样返回给客户端;
抓包工具就相当于个透明的中间人,数据经过的时候它一只手接到数据,然后另一只手把数据传出去。
再来看看 HTTPS 的抓包

这个时候抓包工具对客户端来说相当于服务器,对服务器来说相当于客户端。在这个传输过程中,客户端会以为它就是目标服务器,服务器也会以为它就是请求发起的客户端。
客户端连接抓包工具提供的代理服务; 客户端需要安装抓包工具的根证书; 客户端发出 HTTPS请求,抓包工具模拟服务器与客户端进行TLS握手交换密钥等流程;抓包工具发送一个 HTTPS请求给客户端请求的目标服务器,并与目标服务器进行TLS握手交换密钥等流程;客户端使用与抓包工具协定好的密钥加密数据后发送给抓包工具; 抓包工具使用与客户端协定好的密钥解密数据,并将结果进行展示; 抓包工具将解密后的客户端数据,使用与服务器协定好的密钥进行加密后发送给目标服务器; 服务器解密数据后,做对应的逻辑处理,然后将返回结果使用与抓包工具协定好的密钥进行加密发送给抓包工具; 抓包工具将服务器返回的结果,用与服务器协定好的密钥解密,并将结果进行展示; 抓包工具将解密后的服务器返回数据,使用与客户端协定好的密钥进行加密后发送给客户端; 客户端解密数据;
总结
HTTPS不是单独的一个协议,它是HTTP+SSL/TLS的组合;TLS是传输层安全性协议,它会对传输的HTTP数据进行加密,使用非对称加密和对称加密的混合方式;抓包工具的原理就是“伪装“,对客户端伪装成服务器,对服务器伪装成客户端; 使用抓包工具抓 HTTPS包必须要将抓包工具的证书安装到客户端本地,并设置信任;HTTPS数据只是在传输时进行了加密,而抓包工具是接收到数据后再重新加密转发,所以抓包工具抓到的HTTPS包可以直接看到明文;

为什么用抓包工具看HTTPS包是明文的的更多相关文章
- Wireshark抓包工具解析HTTPS包
目录 一.遇到的问题 二.解决方案 1. 动态生成签名证书 2. Wireshark配置 3. 最终效果 一.遇到的问题 本学期的计算机网络课程需要使用到Wireshark抓包工具进行网络抓包实验,原 ...
- fiddler 抓取 安卓模拟器 https包
2017-12-12 16:47:45 星期二 需要材料: 1. fiddler 2. 逍遥模拟器 步骤: 1. fiddler->tool->Optiions...->connec ...
- ffiddler抓取手机(app)https包
很多同学有看过原文,但是按照原文还是没有设置成功(我就是其中一个)然后查了网上资料,在某些选项上进行增加,填写,配置通过.(和原文略有不同) 安装Fiddler,我们正常的流程在feiddler中设置 ...
- Wireshark抓包工具--TCP数据包seq ack等解读
1.Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节 2.在二进制窗口中,如“DD 3D”,表示两个字节,一个字节8位 3.TCP数据包中,seq表示这个包 ...
- [转]Wireshark抓包工具--TCP数据包seq ack等解读
原文: http://blog.csdn.net/wang7dao/article/details/16805337/ ---------------------------------------- ...
- fiddler 抓取手机http/https包
测试需求: 安装有 fiddler 的电脑台 博主fiddler 4: 手机系统不限制智能手机就行,能连接wifi即可: 首先在fiddler这边配置一下(请不要问我为什么没有汉化毕竟free) ...
- [转]Fiddler抓取Android真机上的HTTPS包
此篇文章转载自:http://blog.csdn.net/roland_sun/article/details/30078353 工作中经常会需要对一些app进行抓包, 但是每次默认都是只抓http请 ...
- ios 免费抓包工具Stream
ios 免费抓包工具Streamhttps://www.52pojie.cn/thread-1002406-1-1.html
- Fiddler抓包工具使用记录
前言 Fiddler是一款强大的Web调试代理工具,又称抓包软件,本文记录如何使用Flidder进行抓包 Fiddler官网:https://www.telerik.com/fiddler 下载安装 ...
随机推荐
- harbor越权漏洞(CVE-2019-16097)
漏洞介绍 这个漏洞可以在注册发送post包时,加入has_admin_role:true就可以直接注册成为管理员,下图可以看看user的结构: 有很多属性,此处我们关注的是"HasAdmin ...
- Java实现 LeetCode 803 打砖块 (DFS)
803. 打砖块 我们有一组包含1和0的网格:其中1表示砖块. 当且仅当一块砖直接连接到网格的顶部,或者它至少有一块相邻(4 个方向之一)砖块不会掉落时,它才不会落下. 我们会依次消除一些砖块.每当我 ...
- Java实现 LeetCode 415 字符串相加
415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num ...
- Java实现 蓝桥杯VIP 算法提高 分苹果
算法提高 分苹果 时间限制:1.0s 内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1-N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li ...
- Java实现 蓝桥杯VIP 算法提高 多项式输出
算法提高 多项式输出 时间限制:1.0s 内存限制:512.0MB 问题描述 一元n 次多项式可用如下的表达式表示: f(x)=a[n]xn+a[n-1]x(n-1)+-+a[1]x+a[0], a[ ...
- Java实现DFS深度优先查找
1 问题描述 深度优先查找(depth-first search,DFS)可以从任意顶点开始访问图的顶点,然后把该顶点标记为已访问.在每次迭代的时候,该算法紧接着处理与当前顶点邻接的未访问顶点.这个过 ...
- java实现第四届蓝桥杯连号区间数
连号区间数 题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R ...
- Linux 用户管理命令-userdel和su
userdel [选项] 用户名,可以删除用户,常用选项 -r :删除用户的同时删除用户的家目录,一般都要用,例如:userdel -r xbb 新建用户和删除用户的本质也就是修改了 /etc/sha ...
- 「MoreThanJava」Java发展史及起航新世界
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- ecshop php商城系统数据库结构及表的介绍分析
ecshop共86张表,确实比较多,不过功能确实最完善的. 表结构分析 ecs_account_log // 用户账目日志表 ecs_activity // 活动表(代码,名称,开始,结束,描述) ...