测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示 。由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS 的包并显示呢?不是说 HTTPS 是加密传输的吗?
今天这篇文章就来探究下上面这个问题,要解释清楚这个问题,我会通过解答以下两个问题来讲述:
- HTTPS 到底是什么?
- 抓包工具抓包的原理?
- 无状态(可以通过 Cookie 或 Session 解决);
- 明文传输;
- 不安全;
文章插图
HTTP与HTTPS
所以要理解 HTTPS 就只需在 HTTP 的基础上理解 SSL/TLS (TLS 是 SSL 的后续版本,现在一般使用 TLS),下面就来了解下 TLS 是什么 。
TLS
?TLS 由记录协议、握手协议、警报协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术 。
「传输层安全性协议」(英语:「T」ransport 「L」ayer 「S」ecurity,缩写:「TLS」)及其前身「安全套接层」(英语:「S」ecure 「S」ockets 「L」ayer,缩写:「SSL」)是一种「安全协议」,目的是为互联网通信提供安全及「数据完整性」保障 。
?
- 「记录协议」 规定 TLS 收发数据的基本单位为:记录 。类似 TCP 里的 segment,所有其它子协议都需要通过记录协议发出 。
- 「警报协议」 的职责是向对方发出警报信息,类似于 HTTP 里的状态码 。
- 「握手协议」 是 TLS 里最复杂的子协议,浏览器和服务器在握手过程中会协商 TLS 版本号、随机数、密码套件等信息,然后交换证书和密钥参数,最终双方协商得到会话密钥,用于后续的混合加密系统 。
- 「变更密码规范协议」 用于告知对方,后续的数据都将使用加密传输 。
文章插图
TLS握手过程
握手过程抓包显示:
文章插图
TLS抓包
文章插图
TLS所传输的数据
交换密钥的过程为:
- 客户端发起一个请求给服务器;
- 服务器生成一对非对称的公钥(pubkey)和私钥(privatekey),然后把公钥附加到一个 CA数字证书 上返回给客户端;
- 客户端校验该证书是否合法(通过浏览器内置的厂商根证书等手段校验),然后从证书中提取出公钥(pubkey);
- 客户端生成一个随机数(key),然后使用公钥(pubkey)对这个随机数进行加密后发送给服务器;
- 服务器利用私钥(privatekey)对收到的随机数密文进行解密得到 key ;
- 后续客户端和服务器传输数据使用该 key 进行加密后再传输;
文章插图
HTTP抓包过程
- 首先抓包工具会提供出代理服务,客户端需要连接该代理;
- 客户端发出 HTTP 请求时,会经过抓包工具的代理,抓包工具将请求的原文进行展示;
- 抓包工具使用该原文将请求发送给服务器;
- 服务器返回结果给抓包工具,抓包工具将返回结果进行展示;
- 抓包工具将服务器返回的结果原样返回给客户端;
再来看看 HTTPS 的抓包
文章插图
HTTPS抓包过程
这个时候抓包工具对客户端来说相当于服务器,对服务器来说相当于客户端 。在这个传输过程中,客户端会以为它就是目标服务器,服务器也会以为它就是请求发起的客户端 。
- 客户端连接抓包工具提供的代理服务;
- 客户端需要安装抓包工具的根证书;
- 客户端发出 HTTPS 请求,抓包工具模拟服务器与客户端进行 TLS 握手交换密钥等流程;
推荐阅读
- 最好用的PDF文档处理工具,不接受反驳
- 阻塞队列实现生产者消费者以及同步工具类
- 阿里数据库开发规范解释:关联查询,为什么要建议小表驱动大表?
- 超级推荐推广宝贝被审核下线 淘宝极速推为什么要审核
- 为什么淘宝等级突然下降很多 淘宝等级下降的原因是什么
- 淘宝常用的付费推广方式 淘宝付费推广工具都有哪些
- 男人脸为什么突然变黑
- 淘宝网卖家使用什么工具与买家交流 淘宝官方营销工具有哪些
- 我是做奶茶的,我用是锡兰红茶,晶花奶精T9[红茶],加白沙糖,加茶味饮料浓浆。为什么做出来怪怪的[红茶]
- |给网恋对象发了张美甲照,为什么他把我删了?