一、HTTP 和 HTTPS 之间的区别
- HTTP 是明文传输的, 通信双方无法确认对方的身份是否正确,很难保证信息不被泄漏, 无法保证数据的完整性, 默认端口80
- HTTPS =
HTTP + 身份认证 + SSL/TLS + 数据私密性 + 数据完整性能
, 默认端口443- HTTPS 经由HTTP 通信,利用 SSL/TLS 建立信息安全通道, 加密数据包
二、对称加密和非对称加密
- 对称加密:加密和解密都使用一个密钥(存储在服务端),客户端需要加密数据时需要先从服务端获取密钥
- 优点:加密速度快,计算量小
- 缺点:通信前双方需要先协商好密钥,在网络传输过程中是不安全的
- 非对称加密: 用一对密钥进行加密和解密,公钥负责加密,私钥负责解密;客户端和服务端都各自保存自己的公钥和私钥,并且客户端和服务端的公钥可以相互传递
- 优点: 私钥不传递给另一方,公钥可以传递,传输过程中比较安全
- 缺点: 加密算法复杂,效率比较低
三、身份认证
- 客户端和服务端 通过第三方权威机构提供和维护的证书来进行身份认证
- 证书跟域名一样是需要购买的,因为机构不仅仅要颁发证书给你,还要提供证书的认证查询服务。
四、HTTPS 加密流程
HTTPS 加密即使用了 非对称加密又使用了对称加密
- 客户端向服务端发起网络请求
- 服务度端向客户端返回携带公钥A 的证书
- 客户端解析证书(浏览器完成的)验证合法性
- 验证通过之后 从证书中取出 公钥A
- 随后生成一个 随机码KEY(客户端公钥),再将这个随机码传递给服务端
- 服务端接收到 随机码之后使用 私钥 B进行解码获取客户端公钥(随机码KEY)
- 然后将要传输的数据通过随机码 KEY进行加密发送给客户端
- 客户端接收到加密过的数据之后使用随机码KEY进行解密