1.为什么要有HTTPS
2.HTTPS的工作原理
3.密码学
4.HTTPS的优缺点
5.在iOS中使用HTTPS
为什么要有HTTPS
HTTP 是一种超文本传输协议,它是无状态的、简单快速的、基于 TCP 的可靠传输协议。
- 明文通信,内容可以直接被窃听
- 无法验证报文的完整性,可能被篡改
- 通信方身份不验证,可能遇到假的客户端或服务器
HTTPS协议基于TLS协议,HTTPS能够有效保障数据机密性与完整性,并且能够完成用户端与客户端的双重验证。
https://juejin.im/entry/571d870a8ac24700646ee43b
https://juejin.im/entry/575ab9b36be3ff0069492bc6
HTTPS的工作原理
1.ClientHello
客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数random_C,扩展字段等信息
2.ServerHello - ServerHelloDone
4个过程(单条发送,有的是合并发送)服务器返回协商的信息结果,选择使用的协议版本,选择的加密套件,选择的压缩的算法,随机数random_S等(随机数用于后续的协商密钥). 服务器也会配置并返回对应的证书链Certificate,用于身份验证与密钥交换,然后会发送ServerHelloDone信息用于通知服务器信息发送结束.
3.证书校验
客户端对服务器返回的证书进行校验,只有证书验证通过后,才能进行后续的通信
4.ClientKeyExchange-Finished
服务器证书验证合法后,客户端计算产生随机数Pre-master,并用server证书中的公钥加密,发送给服务器,同时客户端会根据已有的三个随机数生成协商密钥.客户端会通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信,然后发送Finished消息用于通知服务器信息发送结束.
5.服务器端生成协商密钥
服务器也会根据已有的三个随机数使用相应的算法生成协商密钥,会通知客户端后续的通信都采用协商的通信密钥和加密算法进行通信,然后发送Finished消息用于通知服务器信息发送结束.
6.握手结束
在握手阶段结束后,客户端和服务器数据传输开始使用协商密钥进行加密通信.