charles为什么能够截取https的报文

上一篇博文我实现了使用charles抓包手机端app,但是并没有解释为什么charles能够抓包手机端app,因为手机端请求的数据都是采用https协议传输的,https协议是安全的传输协议,那么charles为什么能够截获https的报文呢?本篇文章我就来一探究竟。
首先我们先了解一下charles在整个过程中都做了哪些事?其实charles主要做了两件事:1 截获真实客户端的https请求,伪装客户端向真实服务器发送请求。2 接收真实服务器的响应,用charles自己的证书伪装服务端发送的数据内容。
如何让客户端信任charles:还记得之前有一步操作很重要,就是在手机端安装charles proxy ca证书,并且让手机端信任该证书!这一步操作保证了charles可以冒充成代理服务器,顺利截取手机端的https的报文。
从下面这张图我们可以更加清晰的理解整个过程。

在这里插入图片描述
整个过程可以总结如下:
1 客户端向服务器发起HTTPS请求。

2 Charles拦截客户端的请求。

3 服务器向“客户端”(实际上是Charles)返回服务器的CA证书。

4 Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Charles拿到了服务器证书的公钥)。

5 客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)。

6 Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)。

7 服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应。

8 Charles拦截服务器的响应,替换成自己的证书后发送给客户端。

至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。

从整个过程来看,我们不难发现,正是由于手机客户端安装并信任了charles proxy ca证书,才使得charles能够顺利截获报文。

HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了 服务器证书公钥 和 HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值