2018-02-02html
目录git
1 HTTPS握手过程
2 Fiddler抓取HTTPS过程
3 Fiddler抓取HTTPS设置
参考算法
数字签名是什么?浏览器
HTTPS 并不是是应用层的一种新协议。只是 HTTP 通讯接口部分用 SSL (安全套接字层)和TLS (安全传输层协议)代替而已。即添加了加密及认证机制的 HTTP 称为 HTTPS ( HTTP Secure )。安全
HTTPS = HTTP + 认证 + 加密 + 完整性保护服务器
握手过程以下:dom
第一步:客户端发起明文请求:将本身支持的一套加密规则、以及一个随机数(Random_C)发送给服务器工具
第二步:服务器选出一组加密规则和hash算法,并将本身的身份信息以证书(CA:包含网站地址、加密公钥、证书颁发机构等信息)和一个随机数(Random_S)发给客户端测试
第三步:客户端接到服务器的响应网站
验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等)。若是证书受信任,则浏览器栏里面会显示一个小锁头,不然会给出证书不受信的提示。
若是证书受信任,或者是用户接受了不受信的证书,客户端作如下事情:
第四步,服务器接收客户端发来的数据要作如下四件事情:
第五步,客户端拿到握手信息解密,握手结束。
客户端解密并计算握手消息的HASH,若是与服务端发来的HASH一致,此时握手过程结束。
第六步,正常加密通讯
握手成功以后,全部的通讯数据将由以前协商密钥enc_key及约定好的算法进行加密解密。
这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都得到了一致的密码和hash算法,而且能够正常的加密解密数据,为后续真正数据的传输作一次测试。
从握手过程,咱们能够得知:
hash算法确保
咱们都知道,Fiddler是个很好的代理工具,可抓取协议请求用于调试。
Fiddler抓取HTTPS协议主要由如下几步进行:
第一步,Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler假装成客户端向服务器发送请求进行握手 。
第二步,服务器发回相应,Fiddler获取到服务器的CA证书, 用根证书(这里的根证书是CA认证中心给本身颁发的证书)公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。而后Fiddler伪造本身的CA证书(这里的CA证书,也是根证书,只不过是Fiddler伪造的根证书), 冒充服务器证书传递给客户端浏览器。
第三步,与普经过程中客户端的操做相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通讯用的对称密钥enc_key。
第四步,客户端将重要信息传递给服务器, 又被Fiddler截获。Fiddler将截获的密文用本身伪造证书的私钥解开, 得到并计算获得HTTPS通讯用的对称密钥enc_key。Fiddler将对称密钥用服务器证书公钥加密传递给服务器。
第五步,与普经过程中服务器端的操做相同,服务器用私钥解开后创建信任,而后再发送加密的握手消息给客户端。
第六步,Fiddler截获服务器发送的密文, 用对称密钥解开, 再用本身伪造证书的私钥加密传给客户端。
第七步,客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样创建了”信任“。
在以后的正常加密通讯过程当中,Fiddler如何在服务器与客户端之间充当第三者呢?
服务器—>客户端:Fiddler接收到服务器发送的密文, 用对称密钥解开, 得到服务器发送的明文。再次加密, 发送给客户端。
客户端—>服务端:客户端用对称密钥加密,被Fiddler截获后,解密得到明文。再次加密,发送给服务器端。因为Fiddler一直拥有通讯用对称密钥enc_key, 因此在整个HTTPS通讯过程当中信息对其透明。
从上面能够看到,fiddler至关于代理,客户端和服务器交互都要经过fiddler,Fiddler抓取HTTPS协议成功的关键是根证书(根证书是CA认证中心给本身颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。),这是一个信任链的起点,这也是Fiddler伪造的CA证书可以得到客户端和服务器端信任的关键。
没有受信任的fiddler根证书,不能让客户端相信fiddler伪造的CA证书,从而获得Pre_master。
接下来咱们就来看若是设置让Fiddler抓取HTTPS协议。
Fiddler菜单->Tools->Telerik Fiddler Options
在跳出的对话框点击‘Yes’
在跳出的对话框点击‘是(Y)’后,经过IE的Internet选项,咱们能够看到Fiddler的根证书被加入到“受信任的根证书颁发机构”。
[2] HTTPS的工做原理