最近想尝试基于Fiddler的录制功能作一些接口的获取和处理工做,碰到的一个问题就是简单链接Fiddler只能抓取HTTP协议,关键的登陆请求等HTTPS协议都没有捕捉到,因此想让Fiddler可以同时抓取到HTTPS和HTTP协议,设置只是很小的一步,关键是了解HTTPS协议的原理、Fiddler抓取HTTPS协议的原理,而后才能更好的理解如何进行设置。本文主要由三部分组成,第一部分用比较通俗形象的方式简述了HTTPS的原理,第二部分则是在第一部分的基础上介绍Fiddler抓取HTTPS协议的原理,最后第三部分就是如何对Fiddler及手机进行设置让其捕捉HTTPS协议。 html
1、浅谈HTTPS 算法
咱们都知道HTTP并不是是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的。目前愈来愈多的企业选择使用HTTPS协议与用户进行通讯,如百度、谷歌等。HTTPS在传输数据以前须要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程当中将确立双方加密传输数据的密码信息。网上有诸多资料,有些写得过于晦涩难懂,尤为是须要密码学的一些知识。我作了一下简单的整理,刨除复杂的底层实现,单从理解SSL协议的角度宏观上认识一下HTTPS。一言以弊之,HTTPS是经过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,而后在后续通讯过程当中就使用协商密钥进行对称加密通讯。HTTPS协议传输的原理和过程简图以下所示: 浏览器
HTTPS协议传输原理 安全
一共有8个步骤,咱们针对每一步,具体看看发生了什么事: 服务器
这里客户端与服务器互相发送加密的握手消息并验证,目的是为了保证双方都得到了一致的密码,而且能够正常的加密解密数据,为后续真正数据的传输作一次测试。另外,HTTPS通常使用的加密与HASH算法以下:非对称加密算法:RSA,DSA/DSS对称加密算法:AES,RC4,3DESHASH算法:MD5,SHA1,SHA256其中非对称加密算法用于在握手过程当中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。因为浏览器生成的密码是整个数据加密的关键,所以在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,所以能够随意传输,而服务器的私钥用于对数据进行解密,因此服务器都会很是当心的保管本身的私钥,防止泄漏。 dom
2、Fiddler抓取HTTPS协议原理 工具
咱们都知道,Fiddler是个很好的代理工具,可抓取协议请求用于调试。关于Fiddler抓取HTTP协议的原理和配置比较简单,对Fiddler和客户端稍做配置,便能使得Fiddler轻易地获取HTTP请求。可是因为HTTPS协议的特殊性,要进一步地配置Fiddler,咱们首先要了解一下fiddler抓取HTTPS协议的原理才能更好地理解如何对fiddler进行配置。Fiddler自己就是一个协议代理工具,在上一节HTTPS原理图上,客户端与服务器端进行通讯的过程所有都由Fiddler获取到,也就是以下图所示: 测试
Fiddler抓取HTTPS协议原理图 网站
咱们看到Fiddler抓取HTTPS协议主要由如下几步进行: 加密
在以后的正常加密通讯过程当中,Fiddler如何在服务器与客户端之间充当第三者呢?
服务器—>客户端:Fiddler接收到服务器发送的密文, 用对称密钥解开, 得到服务器发送的明文。再次加密, 发送给客户端。
客户端—>服务端:客户端用对称密钥加密,被Fiddler截获后,解密得到明文。再次加密,发送给服务器端。因为Fiddler一直拥有通讯用对称密钥enc_key, 因此在整个HTTPS通讯过程当中信息对其透明。
从上面能够看到,Fiddler抓取HTTPS协议成功的关键是根证书(具体是什么,可Google),这是一个信任链的起点,这也是Fiddler伪造的CA证书可以得到客户端和服务器端信任的关键。
接下来咱们就来看若是设置让Fiddler抓取HTTPS协议。
3、Fiddler抓取HTTPS设置
注意如下操做的前提是,手机已经可以连上Fiddler,这部分的配置过程简单就不赘述了,可参考:手机如何链接Fiddler 。
如何继续配置让Fiddler抓取到HTTPS协议呢?
(一)首先对Fiddler进行设置:打开工具栏->Tools->Fiddler Options->HTTPS
对Fiddler进行设置
选中Capture HTTPS CONNECTs,由于咱们要用Fiddler获取手机客户端发出的HTTPS请求,因此中间的下拉菜单中选中from remote clients only。选中下方Ignore server certificate errors.
(二)而后,就是手机安装Fiddler证书。
这一步,也就是咱们上面分析的抓取HTTPS请求的关键。
操做步骤很简单,打开手机浏览器,在浏览器地址输入代理服务器IP和端口,会看到一个Fiddler提供的页面。
接着点击最下方的FiddlerRoot certificate,这时候点击肯定安装就能够下载Fiddler的证书了。
下载安装完成好后,咱们用手机客户端或者浏览器发出HTTPS请求,Fiddler就能够截获到了,就跟截获普通的HTTP请求同样。
好啦,以上就是关于HTTPS的简介以及Fiddler如何获取HTTPS协议的原理和配置,看到Fiddler整齐划一地截获到HTTP和复杂的HTTPS协议,内心还有点小激动呢。
做者:隋胖胖LoveFat
连接:http://www.jianshu.com/p/54dd21c50f21
來源:简书
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。