https真的安全吗?

459 阅读2分钟

https四次握手

  • 第一次 客户端告诉服务器我支持哪些算法
  • 服务器把自己的公钥和证书传给客户端
  • 客户端用它的公钥对随机数加密,发给服务器
  • 服务器用私钥解密获取随机数,建立http数据链路传输的对称加密

这边最有意思的是第二次握手

第一个问题: 为什么https能防止钓鱼网址?

image.png

首先我们假设在你访问服务器端前,有个代理服务器,他可以截取你的数据, 当第二次握手时,服务器下发自己的公钥和证书,这里主要公钥是有CA的私钥加密过的,证书里面有数字签名, 就是用hash把公钥再一次加密,我为了验证公钥是否被篡改过,因为只有入参一样结果必然一样。

那么代理服务器能做的只有截取ca加密过的公钥,但是他不能用ca的私钥加密,所以客户端的解不开的, 所以不行,

第二就是伪造证书--但是因为root证书本身就在我们的服务器上,其他自签的证书我们是不认的,所以也不行,

第三截取所以请求,伪造真的CA证书,这个如果搞的话。会触犯法律的

第二个问题: 为什么https能保持数据一致性?

因为如果公钥是被别人篡改过的,数字签名算法生产的就不一样了。

读到这里的小伙伴们,是不是就真觉https安全了?

其实不然,比如我们在网址里直接输入tianmao.com

image.png 网址首先进入的是,http 然后转跳到https 虽然307只能在同源网址里转跳,不过在第一次转跳前,我直接把所以请求都截取了,然后模范出一个假的,就可以为所欲为了。