标签:tps 流程 目的 section oat 状态码 传输过程 die data-
测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS
的数据包并显示。由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS
的包并显示呢?不是说 HTTPS
是加密传输的吗?
今天这篇文章就来探究下上面这个问题,要解释清楚这个问题,我会通过解答以下两个问题来讲述:
HTTP
作为一种被广泛使用的传输协议,也存在一些的缺点:
为了解决 “明文” 和 “不安全” 两个问题,就产生了 HTTPS
。HTTPS
不是一种单独的协议,它是由 HTTP
+ SSL/TLS
组成。
所以要理解 HTTPS
就只需在 HTTP
的基础上理解 SSL/TLS
(TLS 是 SSL 的后续版本,现在一般使用 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
包可以直接看到明文;标签:tps 流程 目的 section oat 状态码 传输过程 die data-
原文地址:https://www.cnblogs.com/tester-xt/p/13174279.html