一、Https和Http的区别
Https | Http | |
---|---|---|
CA证书 | 需要 | 不需要 |
传输方式 | 加密传输 | 明文传输 |
端口号 | 443 | 80 |
- Https在传输层,Http在应用层
二、Https是什么
1、对称加密
- 服务端生成秘钥,发送给客户端
- 服务端和客户端使用秘钥加密/解密。常用AES、DES
2、非对称加密
- 服务端生成公钥和私钥,把公钥发送给客户端
- 客户端用公钥加密,服务端用私钥解密
- 服务端用私钥加密,客户端用公钥解密
3、结合使用
- 服务端生成公钥和私钥,把公钥发送给客户端
- 客户端生成秘钥,用公钥对私钥加密,发送给服务端
- 服务端用私钥解密,获得私钥
- 服务端和客服端使用秘钥加密/解密
三、为什么不把公钥、私钥、秘钥写在客户端本地?
- 写死在本地,无法动态更新
- 假设写在本地,开发者都知道公钥 私钥 秘钥对应的加密算法,有泄漏信息的可能性
- 如果使用服务端的首次建立通信的时候,把公钥/私钥传递给客户端,客户端就能进行动态更新。员工离职后,即便知道加密算法,也无法破解加密的信息, 因为并不知道私钥或秘钥,从而进一步提升安全性