https四次握手
- 第一次 客户端告诉服务器我支持哪些算法
- 服务器把自己的公钥和证书传给客户端
- 客户端用它的公钥对随机数加密,发给服务器
- 服务器用私钥解密获取随机数,建立http数据链路传输的对称加密
这边最有意思的是第二次握手
第一个问题: 为什么https能防止钓鱼网址?
首先我们假设在你访问服务器端前,有个代理服务器,他可以截取你的数据, 当第二次握手时,服务器下发自己的公钥和证书,这里主要公钥是有CA的私钥加密过的,证书里面有数字签名, 就是用hash把公钥再一次加密,我为了验证公钥是否被篡改过,因为只有入参一样结果必然一样。
那么代理服务器能做的只有截取ca加密过的公钥,但是他不能用ca的私钥加密,所以客户端的解不开的, 所以不行,
第二就是伪造证书--但是因为root证书本身就在我们的服务器上,其他自签的证书我们是不认的,所以也不行,
第三截取所以请求,伪造真的CA证书,这个如果搞的话。会触犯法律的
第二个问题: 为什么https能保持数据一致性?
因为如果公钥是被别人篡改过的,数字签名算法生产的就不一样了。
读到这里的小伙伴们,是不是就真觉https安全了?
其实不然,比如我们在网址里直接输入tianmao.com
网址首先进入的是,http 然后转跳到https 虽然307只能在同源网址里转跳,不过在第一次转跳前,我直接把所以请求都截取了,然后模范出一个假的,就可以为所欲为了。