本篇文章主要讲述HTTPS协议的工作过程,以及怎么解决公钥交换过程中被替换的问题
HTTPS 协议交互过程
1、客户端发起SSL通信,报文中包含客户端支持的SSL版本,加密组件等
2、服务器支持SSL通信时,报文中包含SSL 版本、加密组件, 是从客户端给的列表中选择的
3、服务器发送公钥
4、5、6、客户端校验公钥合法后,会随机生成一个key,用作后续通信的加密秘钥,并且用服务端的公钥加密发送给服务端。(之所以要随机生成一个key,是因为通过公钥加密消息太过复杂,消耗资源过多)
步骤3,怎么防止公钥被调包问题
数字证书
如果服务端发送公钥给客户端时,被中间人替换了怎么办?下面给一个图,可以更
简单的理解
公钥被调包的问题出现,是因为我们的客户端无法分辨返回的公钥是服务端的还是是中间人。问题的难点是如果我们选择直接将公钥传递给客户端的方案,我们始终无法解决公钥传递被中间人调包的问题。
所以,我们不能直接将服务器的公钥传递给客户端,而是第三方机构使用它的私钥对我们的公钥进行加密后,再传给客户端。客户端再使用第三方机构的公钥进行解密。这也就是数据证书