HTTP有三个问题:
- 发送的数据没有加密,可能被窃听
- 数据没有校验,可能被篡改
- 没有验证通信对方是不是冒充的
HTTPS解决问题:
1、混合加密解决窃听问题(服务器生成公私钥,公钥发送给客户端,客户端生成共享密钥,用公钥加密,发送给服务端,服务端用私钥解密,得到共享密钥,后面通信就用共享密钥加解密)
2、服务器用摘要算法计算出传输内容的哈希值(也就是指纹,这个哈希是唯一的,且无法通过哈希值推导内容),客户端收到后,也对内容进行哈希,如果两边哈希值相同,则没有被篡改
3、服务器把公钥注册到了CA,CA用自己的私钥对服务器的公钥进行数字签名,并颁发数字证书,客户端拿到服务器的数字证书后,用CA公钥解密,验证该证书的真实性,这样就可以防止有中间人对客户端冒充服务器,对服务器冒充客户端了
THE END
暂无评论内容