HTTPS
HTTPS 也是应用层协议、在HTTP的基础上引入了加密层。
为什么要加密 ?
HTTP 协议按照文本的方式明文传输的、在传输数据的过程中可能被修改。
HTTPS 的工作过程
- 明文 :要传输的原始数据
- 密文 : 经过加密后的数据
- 加密 : 将明文通过一系列转换变成密文
- 解密 : 将密文通过一系列转换变成明文
对称加密
客户端和服务器拥有一个相同的密钥、通过这个密钥可以把明文加密成密文、密文解密成明文。服务器 / 客户端生成一个密钥、让对方也持有这个密钥。
一个服务器要为多个客户端服务、如果使用 相同的密钥 容易被获取、需要使用不同的密钥。因此需要先用网络传输把密钥给对方。假设客户端随机生成一个密钥并将这个密钥传输给服务器(也可以服务器生成密钥)。
但如果明文传输密钥、密钥在传输过程中被获取到、这个密钥也就没有作用

非对称加密
非对称加密需要 2 个密钥 : 公钥 和 私钥 。可以用 私钥加密公钥解密 或者 公钥加密私钥解密
由服务器生成公钥和私钥、服务器持有私钥、将 公钥 传输给客户端。客户端用这个 公钥 生成 对称密钥、再用 公钥 对 密钥 进行加密。在传输过程中如果密钥被获取了、没有私钥不能解密就无法获取到明文数据。服务器可以用私钥对客户端发过来的密钥进行解密、获取对称密钥。后面客户端和服务器就可以使用 这个密钥 进行对称加密、数据在传输过程中也就是安全的

非对称加密和对称加密配合使用
只用非对称加密可行吗 ?
对称加密 效率高占用的系统资源少。非对称加密 比较效率低占用系统资源多。用非对称加密传输密钥、用对称加密传输数据。
密钥安全 => 用密钥加密的数据也安全
但是非对称加密仍然存在 问题 : 可能被中间人攻击

之后再使用 对称加密 、已经没有作用了。中间人已经获取到了 密钥
证书
为了解决中间人攻击问题、引入证书的机制。通过第三方公信机构颁发的证书来证明公钥是可信的
证书是一个经过 CA(证书颁发机构)数字签名的数据文件。
证书上包含了以下信息:
- 证书发布机构
- 证书有效期
- 公钥
- 证书所有者
- 签名
...
在客⼾端和服务器建⽴连接的时候、服务器给客⼾端返回⼀个证书。客户端收到公钥后,先通过 CA 的数字签名和域名验证确认它的身份,攻击者不能随意替换公钥
通过证书校验来验证通信对方是不是可信的