https原理以及fiddler截获https报文原理

https原理

简要理解:

1、客户端请求服务器
2、服务器返回一个ca证书,证书里面有服务器的非对称加密的公钥
3、ca证书也是非对称加密的,是ca机构用其私钥加密过的
4、客户端从受信任的ca证书列表中取出该机构证书的公钥,并对证书进行解密
5、客户端解密后就得到服务器的公钥
6、客户端随机生成一堆对称加密密钥,并用服务器的公钥进行加密,发给服务器,以后服务器和客户端双方就用这个对称密钥来发送信息了

参考文章:https://www.jianshu.com/p/e96620cdc2cf

详细理解:

1、https是使用非对称加密算法来对服务器客户端双方的报文进行加密的,所谓非对称加密,就是加密和解密的时候使用不同的秘钥,私钥加密后的密文,只要是公钥,都可以解密,但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。
2、https传输中服务器使用私钥,服务器会把公钥告诉客户端,客户端给服务器发送数据的时候就会用其提供的公钥来进行加密
3、服务器的公钥不是直接发送给客户端的,如果直接发送的话有可能会造成中间人窃取冒充服务器给客户端发送假的公钥
4、服务器的公钥是放在证书上的,那如何保证这个证书的真实性呢,证书是由信任的ca机构颁发的,而服务器发给服务器的证书也是加密的。是ca机构用他们的私钥对证书加密以后,客户端再使用ca机构的公钥来进行解密。所以如果证书能够用ca机构的公钥来解密我们就认为它是没有被调包的。
5、客户端如何获得ca机构的公钥?现实中,浏览器和操作系统都会维护一个权威的第三方机构列表(包括它们的公钥)。因为客户端接收到的证书中会写有颁发机构,客户端就根据这个颁发机构的值在本地找相应的公钥。
6、上面的加密都是使用非对称加密的方法来实现的,那当客户端获取到服务器的公钥以后,就会用随机生成一对对称加密的秘钥,并且用服务器的公钥进行加密,告诉服务器以后就用这个对称加密的秘钥来进行通信,服务器收到用自己的私钥解密到这个对称加密秘钥后,以后服务器客户端之间互相发送消息就会使用这对秘钥来进行了。

参考文章:
https://www.cnblogs.com/zhangshitong/p/6478721.html

fiddler截获https报文原理

上面说到https传输的一个重要的点在于客户端获取到服务器的公钥,而这个公钥是放在受信任的签发机构给服务器颁发的证书中的,所以要用fiddler抓取https的重点在于截取服务器端的证书并且用自己的私钥来加密,然后给客户端提供一个自己的公钥,然后fiddler就充当第三方来跟服务器和客户端来通信。那么怎么让客户端信任呢?就是要安装一个根证书。什么是根证书?就是自己签发的一个安全证书,安装了根证书以后服务器就会对这个签发机构的所有证书都认为是受信任的。

fiddler在整个https通信的过程如下:
首先fiddler截获客户端浏览器发送给服务器的https请求,此时还未建立握手。
第一步,fiddler向服务器发送请求进行握手,获取到服务器的CA证书,用其颁发机构的公钥进行解密,验证服务器数据签名,获取到服务器CA证书公钥。
第二步,fiddler伪造自己的CA证书,冒充服务器证书传递给客户端浏览器,因为客户端浏览器安装了根证书,所以认为该证书是可信的,做跟fiddler一样的事,获取了fiddler伪造的公钥。
第三步,客户端浏览器生成https通信用的对称密钥,用fiddler伪造的公钥加密后传递给服务器,被fiddler截获。
第四步,fiddler将截获的密文用自己伪造的私钥解开,获得https通信用的对称密钥。
第五步,fiddler将对称密钥用服务器真实的公钥加密传递给服务器,服务器用私钥解开后建立信任,握手完成,用对称密钥加密消息,开始通信。
第六步,fiddler接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文。再次加密,发送给客户端浏览器。
第七步,客户端向服务器发送消息,用对称密钥加密,被fidller截获后,解密获得明文。

由于fiddler一直拥有通信用对称密钥,所以在整个https通信过程中信息对其透明。

展开阅读全文

没有更多推荐了,返回首页