定义
HTTP over SSL 的简称,即工作在 SSL (或 TLS)上的 HTTP。说白了就是加密通信 的 HTTP。
HTTP Secure /HTTP over SSL / HTTP over TLS
SSL
Secure Socket Layer -> TLS Transport Layer Security
定义:在HTTP之下增加的一个安全层,位于HTTP和TCP之间
- HTTPS的底层支持就是SSL,一开始他们的关系类似于http和html类似,他们的关系是共生的
- 后来改名TLS
本质:
在客户端和服务器之间用非对称加密协商出一套对称密钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输
HTTPS并不比HTTP高级,也不是HTTP衍生的协议,只是对HTTP进行了包装,加了一个安全的罩子,打开包装,里面就是HTTP
HTTPS并不是协议,也没有版本号,HTTP是协议
为什么不直接用非对称加密?
非对称加密由于使用了复杂了数学原理,因此计算相当复杂,如果完全使用非对称 加密来加密通信内容,会严重影响网络通信的性能
HTTPS连接
- 客户端请求建立TLS连接
- 服务器发回证书
- 客户端验证服务器证书
- 客户端信任服务后,和服务器协商对称秘钥
- 使用对称秘钥开始通信
1.Client Hello
会发送一个单字节信息,附加上一些可选内容给服务器
- 可选的TLS版本
- 可选的加密套件
- 可选的对称加密算法
- 可选的非对称加密算法
- 可选的hash算法
- 客户端随机数
如下图所示:
2.Server Hello
与客户端类似,服务器会发送一个单字节信息及一些可选内容给客户端,同时会保留自己的服务器随机数
- 可选的TLS版本
- 可选的加密套件
- 可选的对称加密算法
- 可选的非对称加密算法
- 可选的hash算法
- 服务器随机数
如下图所示:
3.服务器证书 信任建立
服务器发送证书给客户端,同时客户端进行验证,证书中包含了
- 服务器信息
- 服务器公钥(其实是个数据)
- 服务器主机名
- 服务器地区
- 服务器证书的签名
- 证书签发机构
- 证书签发机构的公钥:即用于验证这个「公钥签名」的另一个公钥
- 证书签发机构的名字
- 证书签发机构的地区
- 证书签发机构的公钥的签名
- 根证书机构
- 根证书机构的公钥(不会无限递归,因为其可信度已经很高,一般都是设备的根证书,比如mac系统的根证书)
-
- 根证书机构的名字
- 根证书机构的地区
- 根证书机构的公钥(不会无限递归,因为其可信度已经很高,一般都是设备的根证书,比如mac系统的根证书)
4.Pre-master Screct
客户端发送Pre-master Screct数据,是由客户端生成的一个加密随机数
通信双方都持有Pre-master Screct之后,会通过①客户端随机数②服务器随机数③Pre-master Screct共同计算出->Master Screct
然后Master Screct数据生成以下信息(一共6个,以下4个是主要信息),由此就能实现对称加密的加密通信
- 客户端加密密钥
- 服务端加密密钥
- 客户端MAC secret
- 服务端MAC secret
- HMAC(hash-based message authenticate code ):基于 hash 的消息验证码,是 安全通信中必要的组成部件。
- 主要是 防止消息被篡改,和对称加密一起保护数据通信的完整性。
5.客户端通知:将使用加密通信
6.客户端发送:Finished
包含前面5步的信息合在一起进行HMAC之后的信息
7.服务器通知:将使用加密通信
8.服务器发送:Finished
综合前面信息进行发送