HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个:
(1)数据保密性:保证数据内容在传输的过程中不会被第三方查看
(2)数据完整性:及时发现被第三方篡改的传输内容
(3)身份校验安全性:保证数据到达用户期望的目的地
因此,Fiddler 要实现 HTTPS 抓包关键点就是证书,有了证书才能对抓到的 HTTPS 流量进行解密/加密。
Fiddler HTTP 抓包原理,如下图:
其实,Fiddler 是浏览器的服务器,而 Fiddler 是服务器的客户端。在没有 Fiddler 的情况下,浏览器拥有的公开证书来自服务器,服务器保存私有证书。服务器使用私有证书对数据进行加密,浏览器使用公有证书对数据解密。
此时,我们添加了一个 Fiddler 作为代理,那么此时客户端拥有的公共证书应该来自 Fiddler,而 Fiddler 拥有私有证书的同时,还拥有来自服务器的公共证书。浏览器和服务器交互如下:
请求:浏览器使用 Fiddler 公共证书将数据加密,发送给 Fiddler。Fiddler 使用私有证书解密,然后将内容采用服务器的公共证书再次加密,发送给服务器,服务器使用自己的私有证书进行解密。
响应:服务器使用私有证书对响应数据加密,然后发送给 Fiddler。Fiddler 将收到的数据使用服务器的公共证书解密,然后再次使用自己的私有证书加密,将再次加密后的数据发送为浏览器,浏览器收到后使用 Fiddler 的公共证书进行解密,将解密的内容最终展现给用户。
下面将介绍怎样通过 Fiddler 抓取 HTTPS 请求。
点击“Tools”->“Fiddler Options”->“HTTPS”,如下图:
分别勾选“Capture HTTPS CONNECTs”和“Decrypt HTTPs traffic”复选框。
“Capture HTTPS CONNECTs”表示我们能够抓取到 HTTPS 连接(Fiddler 默认情况下将 HTTPS 连接隐藏了的,查看菜单“Rules”->“Hide CONNECTs”是否被勾选)。
“Decrypt HTTPs traffic”表示会对收到的 HTTPS 流量尝试使用 Fiddler 的证书进行解码。如果勾选了该复选框,且以前没有安装 Fiddler 证书。此时,Fiddler 将弹出提示安装证书,如下图:
该提示框提示“信任 Fiddler Root 证书?”,当然信任(不信任就玩不下去了),直接点击“Yes”即可。Window 系统将弹出安全警告,如下图:
点击“是”,安装 Fiddler Root 证书到 Windows 中。接下来,提示是否将 Fiddler Root 证书添加到本机 Root 证书列表。如下图:
直接点击“是”,系统提示证书添加成功。如下图:
如果你还是不放心证书是否真的安装成功了。可以在 HTTPS 选项卡中点击“Actions”,选择“Open Windows Certificate Manger”去打开 Windows 证书管理器。如下图:
在打开的证书管理器中,点击“操作”菜单,选择“查找证书”,在“包含”输入框中输入“Finddler”查找 Fiddler 相关的证书,如果能够正常看见 Fiddler 证书,说明证书安装成功。如下图:
通过前面一些列的操作,已经完成 Fiddler 抓取 HTTPS 的配置。此时,我们尝试访问一些 HTTPS 网站,查看 Fiddler 是否能够抓取到 HTTPS 请求,如下图:
如果你依然不能抓取到 HTTPS 浏览,需要检查一下你使用的浏览器是否为 Firefox,Firefox 抓取 HTTPS 流量稍微复杂些,后面章节重点介绍。请切换到,IE 或者 Chrome 浏览器。
如果还是不行,那么可以点击“HTTPS”选项卡中的“Actions”,点击“Reset All Certificates”去重置所有的 Fiddler Root 证书,重新安装证书,或者重启 Fiddler。