目录

一、HTTPS握手公钥私钥非对称加密解密原理以及数字证书由来。

二、浏览器访问基于https协议的网址过程如下(以百度为例):

三、Fiddler截获https请求实战。(所有证书问题100%成功的解决方案)


一、HTTPS握手公钥私钥非对称加密解密原理以及数字证书由来。

(1) HTTPS协议=HTTP协议+SSL协议,默认端口:443

(2) HTTP协议(HyperText Transfer Protocol):超文本传输协议。默认端口:80,其中包含请求和响应两部分,其中请求包含:请求行、请求头、请求正文,响应包含:响应行、响应头、响应正文。

(3) SSL协议(Secure Socket Layer) 安全套接层:为NetScape所研发,用以保障在Internet上数据传输的安全,利用数据加密技术,封装各种高层协议(如:http协议),具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。可确保数据在网络上的传输过程中不会被截取及窃听。

(4) 加密和认证:加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容。而身份认证是用来判断某个身份的真实性,其重点在于确认用户的真实性。两者的侧重点是不同的。加密和认证是通过RSA加密算法来实现的。

(5)RSA加密算法:RSA加密算法是1977年由(美国麻省理工学院)研发的。此算法中加密和认证都是通过一对密钥(公钥和私钥)来实现的,它是目前最有影响力的秘钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为秘钥数据加密标准。

(6) 公钥和私钥:(公钥私钥加密解密方式为非对称加密方式)在现代密码体制中,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

Fiddler抓包工具+教程+实战视频戳一戳免费获取

公钥私钥的原则:

1.公开的密钥叫公钥,只有自己知道的叫私钥
2.用公钥加密的数据只有对应的私钥可以解密
3.用私钥加密的数据只有对应的公钥可以解密
4.如果可以用公钥解密,则必然是对应的私钥加的密
5.如果可以用私钥解密,则必然是对应的公钥加的密
6.公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥。

身份认证过程如下:

身份认证和加密不同,只要身份认证,鉴别用户真伪。

只要鉴别用户的私钥是正确的,就可以鉴别身份真伪

A和B两个用户,A想让B知道自己是真实的A,不是假冒的,因此身份认证过程:

1.A用自己的私钥对文件加密,从而对文件签名,并将签名文件发送给B

2.B用A的公钥解密文件,从而验证签名,完成身份认证过程

再是文件加密解密过程:同上(需完成两次验证)

总结

根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。

数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。  

可以这样说,数字证书就是经过CA认证过的公钥,而私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管。具体使用时,签名操作是发送方用私钥进行签名,接受方用发送方证书来验证签名;加密操作则是用接受方的证书进行加密,接受方用自己的私钥进行解密。

二、浏览器访问基于https协议的网址过程如下(以百度为例):

1、用户在浏览器输入www.baidu.com,浏览器首先查找浏览器缓存,如果存在百度的缓存直接返回结果,
如果不存在,查找主机中的hosts文件,如果存在百度的信息,主机直接进行访问,
如果不存在,查找本机首选的DNS缓存服务器中是否存在有百度缓存,如果存在,返回给主机,主机访问百度服务器,
如果不存在,DNS缓存服务器会去查找根域,根域不存在百度的具体地址,但会返回com.的一级域名地址
然后,DNS缓存服务器会去查找.com,一级域名解析服务器中,存在baidu.com的信息返回

2、DNS缓存服务器再去查找baidu.com的解析服务器,发现存在www的记录,将www的具体IP地址返回给DNS缓存服务器

3、DNS缓存服务器将信息缓存下来,并将信息返回该主机
主机接收到具体地址后,去访问百度的服务器

12、当客户机关闭浏览的网页时(TCP的四次挥手)

13、 客户机向服务器发送断开连接请求ACK=1,FIN=1seq=u期待的确认序号为u+1,此时客户机处于终止等待1状态

14、服务器收到客户机的请求,发送确认关闭的报文ACK=1ack=u+1seq=v,此时服务器处于等待关闭状态

15、客户机收到后,处于终止等待2状态

16、 服务器向客户机发送断开连接报文FIN=1ACK=1ack=u+1seq=w,此时服务器处于最后确认状态

17 客户端接收到服务器请求后,发送确认报文ACK=1,seq=u+1,ack=w+1,此时客户机处于等待时间状态,等待最后两个最长报文时间、

18、服务器接收后立即关闭

19、 客户机等待时间过后,关闭,两者都进入关闭连接状态

三、Fiddler截获https请求实战。(所有证书问题100%成功的解决方案)

Fiddler截获https请求实战视频戳一戳免费获取

(1) 清理环境(首次安装Fiddler不需要清理)

1、卸载Fiddler软件以及根证书生成器Fiddler2 CertMaker。

2、清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有的RSA算法文件,此算法文件和非对称公钥密钥加密相关。

3、清除电脑上的根证书,WIN+R快捷键,输入: certmgr.msc, 然后回车,查找所有fiddler证书,然后删除。

4.清除浏览器上的证书文件 ,以谷歌浏览器为例说明,在浏览器上输入: chrome://settings/,进入[高级]->[管理证书],有”受信任的根证书颁发机构”列表。此处需要仔细查找带有DO_NOT_TRUST_FiddlerRoot的字样,并删除。

(2) 安装并配置Fiddler抓取Https数据报文。

1.下载并安装fiddler,官网下载地址:https://www.telerik.com/download/fiddler

2.下载并安装Fiddler证书生成器,官网下载地址:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2

3.配置 Connecttions 如下图 选中 Tools —> Options —> Connecttions;

因为要抓取https的数据 所以还需要生成证书,一路点击确认 Actions —> TrustRoot Certificate :