由于HTTPS建立过程经常忘记,固记录
HTTPS建立流程
- 客户端发起SSL连接
- 服务端发送证书(证书中包含了服务端公钥)
- 客户端根据已有证书判断是否是可信任的(客户端决定是否继续)
- 服务端要求客户端发送证书
- 验证通过,建立连接
- 客户端发送协商请求(询问服务端使用哪种加密算法)
- 服务端确定加密算法,发送到客户端
- 客户端生成随机字符串,通过协商好的加密算法使用服务端公钥加密发送到服务端
- 服务端使用私钥解密得到随机字符串
- 随后的数据传输使用得到的随机进行对称加密
1-5步是建立连接的过程
6-9步使用非对称加密传送密钥
10使用对称加密传输数据
非对称加密保证了安全性,对称加密保证了快速性
证书
连接建立初期需要用到证书,证书是一个用于双方确认身份的第三方信任机构。假设没有证书这个概念,那么当服务端向客户端发送公钥的时候,中间人对该请求截取没有发送到客户端,反而使用自己的公钥发送到客户端,客户端使用中间人发布的公钥进行加密,随后发送到中间人,中间人使用私钥解密即可拿到对称密钥。所以单纯使用非对称加密仍然是不安全的,引入证书的概念,证书保证了客户端或者服务端收到的一定是服务端或者客户端发送的请求。