目录

  • HTTPS 到底是什么
  • TLS
  • 抓包工具抓包的原理
  • 总结

测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示。由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS 的包并显示呢?不是说 HTTPS 是加密传输的吗?

今天这篇文章就来探究下上面这个问题,要解释清楚这个问题,我会通过解答以下两个问题来讲述:

  1. HTTPS 到底是什么?
  2. 抓包工具抓包的原理?

HTTPS 到底是什么

HTTP 作为一种被广泛使用的传输协议,也存在一些的缺点:

  1. 无状态(可以通过 Cookie 或 Session 解决);
  2. 明文传输;
  3. 不安全;

为了解决 “明文” 和 “不安全” 两个问题,就产生了 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 的握手过程:

握手过程抓包显示:


交换密钥的过程为:

  1. 客户端发起一个请求给服务器;
  2. 服务器生成一对非对称的公钥(pubkey)和私钥(privatekey),然后把公钥附加到一个 CA数字证书 上返回给客户端;
  3. 客户端校验该证书是否合法(通过浏览器内置的厂商根证书等手段校验),然后从证书中提取出公钥(pubkey);
  4. 客户端生成一个随机数(key),然后使用公钥(pubkey)对这个随机数进行加密后发送给服务器;
  5. 服务器利用私钥(privatekey)对收到的随机数密文进行解密得到 key ;
  6. 后续客户端和服务器传输数据使用该 key 进行加密后再传输;

抓包工具抓包的原理

先来看看抓 HTTP 包的原理

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

再来看看 HTTPS 的抓包

这个时候抓包工具对客户端来说相当于服务器,对服务器来说相当于客户端。在这个传输过程中,客户端会以为它就是目标服务器,服务器也会以为它就是请求发起的客户端。

  1. 客户端连接抓包工具提供的代理服务;
  2. 客户端需要安装抓包工具的根证书;
  3. 客户端发出 HTTPS 请求,抓包工具模拟服务器与客户端进行 TLS 握手交换密钥等流程;
  4. 抓包工具发送一个 HTTPS 请求给客户端请求的目标服务器,并与目标服务器进行 TLS 握手交换密钥等流程;
  5. 客户端使用与抓包工具协定好的密钥加密数据后发送给抓包工具;
  6. 抓包工具使用与客户端协定好的密钥解密数据,并将结果进行展示;
  7. 抓包工具将解密后的客户端数据,使用与服务器协定好的密钥进行加密后发送给目标服务器;
  8. 服务器解密数据后,做对应的逻辑处理,然后将返回结果使用与抓包工具协定好的密钥进行加密发送给抓包工具;
  9. 抓包工具将服务器返回的结果,用与服务器协定好的密钥解密,并将结果进行展示;
  10. 抓包工具将解密后的服务器返回数据,使用与客户端协定好的密钥进行加密后发送给客户端;
  11. 客户端解密数据;

总结

  • HTTPS 不是单独的一个协议,它是 HTTP + SSL/TLS 的组合;
  • TLS 是传输层安全性协议,它会对传输的 HTTP 数据进行加密,使用非对称加密和对称加密的混合方式;
  • 抓包工具的原理就是“伪装“,对客户端伪装成服务器,对服务器伪装成客户端;
  • 使用抓包工具抓 HTTPS 包必须要将抓包工具的证书安装到客户端本地,并设置信任;
  • HTTPS 数据只是在传输时进行了加密,而抓包工具是接收到数据后再重新加密转发,所以抓包工具抓到的 HTTPS 包可以直接看到明文;

为什么用抓包工具看HTTPS包是明文的相关推荐

  1. 数据抓包工具(http/https)Charles,wireshark,fiddler的安装使用和区别对比 链接:https://www.365jz.com/article/24504 著作权归作者

    数据抓包工具(http/https)Charles,wireshark,fiddler的安装使用和区别对比 转载:https://www.365jz.com/article/24504.

  2. fiddler 抓取 安卓模拟器 https包

    2017-12-12 16:47:45 星期二 需要材料: 1. fiddler 2. 逍遥模拟器 步骤: 1. fiddler->tool->Optiions...->connec ...

  3. Fiddler抓包工具的HTTPS 证书安装

    1.说明: 默认状态下,Fiddler 只能监听 HTTP 请求.当打开 HTTPS 网页时(如htt ps://www.baidu.com),请求使用 HTTPS 协议建立连接通道,Fiddler ...

  4. Fiddler抓取手机(app)https包

    很多同学有看过原文,但是按照原文还是没有设置成功(我就是其中一个)然后查了网上资料,在某些选项上进行增加,填写,配置通过.(和原文略有不同) 安装Fiddler,我们正常的流程在feiddler中设置 ...

  5. ffiddler抓取手机(app)https包

    很多同学有看过原文,但是按照原文还是没有设置成功(我就是其中一个)然后查了网上资料,在某些选项上进行增加,填写,配置通过.(和原文略有不同) 安装Fiddler,我们正常的流程在feiddler中设置 ...

  6. Charles 抓取安卓手机https包(安卓<华为>客户端应用,windows环境)

    charles下载安装 前提先安装配置好Java环境,官网下载安装Charles:https://www.charlesproxy.com/download/ 安卓手机安装证书 手机连接电脑代理: 首 ...

  7. android rom打包解包工具,Android ROM包定制(解包,增删模块,打包)

    解包 假设有一个名为update.zip的ROM包,我们要在Ubuntu下对它进行定制.首先把system.transfer.list和system.new.dat.br(有些旧版的系统的镜像可能是s ...

  8. Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包

    抓包的重要性 网络抓包,是Android应用逆向分析的重中之重,很多时候我们拿到一个APP,不知道从何入手分析,往往是从抓包开始,先弄清楚他与服务器通信的内容,如果一目了然,我们完全可以照搬,自行写一 ...

  9. 抓包工具Fiddler初试

    1.抓包工具下载 https://www.telerik.com/download/fiddler/fiddler4 2.抓包工具安装 安装完成 3.打开应用 全部点击"yes" ...

最新文章

  1. 【C#】集合_哈希表_字典_泛型_文件
  2. 区块链中的智能合约是什么?
  3. 嵌入式CNN检测网络--LCDet
  4. 一切都不能够想当然D
  5. bzoj1452: [JSOI2009]Count
  6. 【学习笔记】34、函数是Python的头等对象
  7. 敏捷有效执行的关键软技能
  8. ZT Web Control 开发系列(一) 页面的生命周期
  9. ibm db2获取目标时间与当前时间的差值_【学术论文】高帧频视觉实时目标检测系统...
  10. Shell定时删除日志
  11. |Vijos|NOIP2015|模拟|P1975 扫雷游戏
  12. [分组背包]Luogu1064 金明的预算方案
  13. Synchronized的锁优化,kotlin中文文档pdf
  14. 【吐血整理,建议收藏】B站上有哪些值得反复观看的Java视频教程?
  15. MySQL生成随机姓名
  16. 2021-06-02
  17. 风控中消费信贷板块的英文词汇
  18. Renesas:配置中断的常规流程
  19. 面试已经通过不想去,怎么拒绝HR?
  20. 对1bit的脉冲信号进行展宽,转为32bit位宽,并产生有效信号

热门文章

  1. SecureCRT终端显示中文乱码问题的解决方案
  2. 图示数学之: 克莱因瓶之谜
  3. Mscomm32使用记录
  4. 区块链技术助力解决小微企业融资难融资贵问题
  5. 前端(DOM 、BOM 和 事件 )
  6. 和软件MVP相比,打造硬件产品的MVP真的更难吗?
  7. 中了ARP病毒解决方法与相关工具
  8. 增大/减少Mp3文件的默认音量—令其统一音量
  9. windows bat批处理解压文件
  10. ce练习-搭建网盘服务