关于HTTPS请求原理与Fiddler抓包理解

前言

提醒:阅读本文之前需要了解AES对称加密和RSA非对称加密的一些基本知识概念!
一、因为好奇!好奇Https哪里比Http安全,好奇Https的请求原理!
二、因为需求!因为抓包是日常工作所需的技能,所以便去学习了Fiddler!
三、为什么要合起来记录,可能我觉得这样可以更好理解Fiddler!

HTTPS请求原理

关于HTTPS请求原理与Fiddler抓包理解
以上图例便是网上学习HTTPS原理后综合自己的愚见所画的一张图,虽然简陋,甚至还有点丑,但五脏俱全,该有东西应该都有了,或者还有不全甚至不对的地方,还望批评指出!

Fiddler抓包原理

关于HTTPS请求原理与Fiddler抓包理解
上图只是简陋的说明了Fiddler在请求中扮演的角色以及所处的位置,下面是我摘抄一位大神对Fiddler的见解 APP开发浅谈-Fiddler抓包详解,里面更有详细的Fiddler抓包使用教程。

第一步,客户端请求建立HTTPS连接,发送客户端支持的加密协议及版本列表等信息给目标服务器

第二步,此时Fiddler 伪装目标服务器 接受客户端请求,并 伪装成客户端 向目标服务器发送相同的请求;

第三步,目标服务器收到Fiddler的请求以后,从请求中筛选合适的加密协议,并返回服务器CA证书,证书中包括公钥信息;

第四步,Fiddler伪装客户端收到目标服务器的响应后 保存目标服务器证书并自签名一个CA证书,伪装成目标服务器,把自签的证书下发给客户端;

第五步,客户端验证证书合法性。(Fiddler能否抓取到HTTPS报文关键看这一步,根据预先安装好的Fiddler证书,从中找到公钥来解密出证书签名,可以参照HTTPS原理截图)

第六步,客户端生产对称**,通过Fiddler证书的公钥加密发送给目标服务器。

第七步,Fiddler拦截客户端的请求以后,使用自己证书的私钥解密该报文,获取对称加密秘钥,并 使用之前保存的目标服务器证书中带的公钥加密该对称**发送给目标服务器 。此时对称**已经泄露了,以后Fiddler可以使用该**截获客户端和服务器传输的数据。

第八步,目标服务器接收到Fiddler发送的加密的对称**后使用自己的私钥解密,并使用对称**加密测试数据传给客户端;

第九步,Fiddler使用前面获取的对称**解密报文(这样就截获数据了),并把原报文返回给客户端。

第十步,客户端验证数据无误以后HTTPS连接就建立完成,客户端开始向服务器发送使用对称**加密的业务数据;

第十一步,Fiddler使用前面获取的对称**解密客户端发送的数据并重新加密转发给目标服务器。

以上11步,便是Fiddler的使用原理,配合HTTPS原理去理解,文字虽然有点多,但慢慢读,还是能很清晰地理解。最后,如有错误,还望批评指出!

参考文档

写一篇最好懂的https讲解
漫画:什么是 HTTPS 协议?
APP开发浅谈-Fiddler抓包详解