【网络&通信协议系列(三)】HTTPS实现原理
概述
HTTPS=HTTP+TLS,HTTP全称超文本传输协议,是基于TCP的无状态协议,通信是以明文的形式,是现阶段互联网中广泛采取的通信协议。因为通信报文使用明文形式,所以会存在安全性问题,为了解决安全性问题,便引入了对HTTP进行SSL加密的方式,经过演变最终形成了现在的HTTPS通信协议。
实现原理
通过非对称加密握手建立连接,然后使用对称加密通信。
说到HTTPS就不能不提CA,也就是颁发证书的机构。所有广域网通信的HTTPS证书都需要前往权威机构申请,大部分都是收费的,完全免费并且浏览器信任的也有,推荐Let’s Encrypt。
一次HTTPS请求建立连接的过程:
- 主流浏览器都会预置CA的根证书
- 当请求一个HTTPS站点时,会从服务器获取证书,证书中包含颁发者机构、拥有者、过期时间等信息
- 浏览器会校验当前证书是否为可信任,如果不可信(如自签证书),提示用户当前证书不合法
- 浏览器会生成一个随机串使用证书中携带的公钥加密,返回给服务器
- 服务器获取到加密内容,使用私钥解密,获取随机串,此随机串会被用作后序的通信报文加密的固定秘钥
- 服务端需要发送内容到客户端,会使用固定秘钥将报文加密然后发给客户端
- 客户端获取到内容,使用相同的秘钥对加密内容进行解密,获取内容
- 客户端后序所有的请求都会经过固定秘钥加密,服务器使用秘钥解密。
过程图示(图片来源于网络):