TLS1.3
客户端和服务端都生成一个随机数, 通过这个随机数生成一对密钥, 分私钥和公钥, 通过公钥加密, 私钥解密, 保证数据传输的安全性
client先发送一个client hello, 里面包含了支持的加密算法, 和一个随机数, 和公钥
服务端返回一个server hello, 里面包含了选择的加密算法, 服务端返回一个证书, 证书里包含了服务端的公钥
这样双方就都有了
- 对方的公钥
- 自己的私钥
- 两个随机数
通过这3个东西, 双方都可以生成一个一模一样的密钥, 用这个密钥对称加密数据, 保证数据传输的安全性
Tls握手过程
- client hello
- server hello
- 服务端返回证书
- 服务端返回server key exchange
- 服务端返回server hello done
- 客户端验证证书
- 客户端返回client key exchange
- 客户端返回change cipher spec
- 客户端返回finished
- 服务端返回change cipher spec
- 服务端返回finished
- 数据传输
|
|
|
|
因为公钥在CA证书里, 所以需要验证证书, 并且提取公钥. 并且其中有一个信任链和数字证书
- 信任链: 看是不是信任最顶层的CA
- 数字证书: 证书里包含了公钥, 证书的签名, 证书的签发者, 证书的有效期等信息. 通过这个签名和公钥就可以认证证书的真实性, 然后看信任链.