强 Fiddler抓取HTTPS最全攻略!后悔没有早知道( 二 )


这里客户端与服务器互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试 。另外,HTTPS一般使用的加密与HASH算法如下:非对称加密算法:RSA,DSA/DSS对称加密算法:AES,RC4,3DESHASH算法:MD5,SHA1,SHA256其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性 。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密 。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而服务器的私钥用于对数据进行解密,所以服务器都会非常小心的保管自己的私钥,防止泄漏 。

强 Fiddler抓取HTTPS最全攻略!后悔没有早知道

文章插图
 
02
Fiddler抓取HTTPS协议原理
我们都知道,Fiddler是个很好的代理工具,可抓取协议请求用于调试 。关于Fiddler抓取HTTP协议的原理和配置比较简单,对Fiddler和客户端稍作配置,便能使得Fiddler轻易地获取HTTP请求 。但是由于HTTPS协议的特殊性,要进一步地配置Fiddler,我们首先要了解一下fiddler抓取HTTPS协议的原理才能更好地理解如何对fiddler进行配置 。Fiddler本身就是一个协议代理工具,在上一节HTTPS原理图上,客户端与服务器端进行通信的过程全部都由Fiddler获取到,也就是如下图所示:
强 Fiddler抓取HTTPS最全攻略!后悔没有早知道

文章插图
 
Fiddler抓取HTTPS协议原理图
我们看到Fiddler抓取HTTPS协议主要由以下几步进行:
第一步,Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler伪装成客户端向服务器发送请求进行握手。
第二步,服务器发回相应,Fiddler获取到服务器的CA证书,用根证书公钥进行解密,验证服务器数据签名,获取到服务器CA证书公钥 。然后Fiddler伪造自己的CA证书,冒充服务器证书传递给客户端浏览器 。
第三步,与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key 。
第四步,客户端将重要信息传递给服务器,又被Fiddler截获 。Fiddler将截获的密文用自己伪造证书的私钥解开,获得并计算得到HTTPS通信用的对称密钥enc_key 。Fiddler将对称密钥用服务器证书公钥加密传递给服务器 。
第五步,与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端 。
第六步,Fiddler截获服务器发送的密文,用对称密钥解开,再用自己伪造证书的私钥加密传给客户端 。
第七步,客户端拿到加密信息后,用公钥解开,验证HASH 。握手过程正式完成,客户端与服务器端就这样建立了”信任“ 。
在之后的正常加密通信过程中,Fiddler如何在服务器与客户端之间充当第三者呢?
服务器—>客户端:Fiddler接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文 。再次加密,发送给客户端 。
客户端—>服务端:客户端用对称密钥加密,被Fiddler截获后,解密获得明文 。再次加密,发送给服务器端 。由于Fiddler一直拥有通信用对称密钥enc_key,所以在整个HTTPS通信过程中信息对其透明 。
从上面可以看到,Fiddler抓取HTTPS协议成功的关键是根证书(具体是什么,可google),这是一个信任链的起点,这也是Fiddler伪造的CA证书能够获得客户端和服务器端信任的关键 。
接下来我们就来看如果设置让Fiddler抓取HTTPS协议 。
03
Fiddler抓取HTTPS设置
注意以下操作的前提是,手机已经能够连上Fiddler,这部分的配置过程简单就不赘述了,可参考:手机如何连接Fiddler。
如何继续配置让Fiddler抓取到HTTPS协议呢?
(一)首先对Fiddler进行设置:打开工具栏->Tools->Fiddler Options->HTTPS
强 Fiddler抓取HTTPS最全攻略!后悔没有早知道

文章插图
 
选中Capture HTTPS CONNECTs,因为我们要用Fiddler获取手机客户端发出的HTTPS请求,所以中间的下拉菜单中选中from remote clients only 。选中下方Ignore server certificate errors.
(二)然后,就是手机安装Fiddler证书 。
这一步,也就是我们上面分析的抓取HTTPS请求的关键 。
操作步骤很简单,打开手机浏览器,在浏览器地址输入代理服务器IP和端口,会看到一个Fiddler提供的页面 。


推荐阅读