HTTPS定义
在HTTP之下增加一个安全层,用于保障HTTP的加密传输
HTTPS本质
在客户端和服务器之间用非对称加密协商出一套对称加密密钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输
HTTPS建立连接过程
客户端建立TLS连接
- Client Hello,包含:
- 可选的TLS版本集合
- 可选的Cipher Suite加密套件集合
- 客户端随机数
- Server Hello,包含:
- TLS版本
- Cipher Suite加密套件
- 服务器随机数
服务器发回证书
- 证书包含:
- 服务器公钥,名字,地区,主机名等
- 对服务器公钥的签名
- 验证上面签名的公钥,及证书签发机构的公钥
- 签发机构的公钥的签名
客户端验证服务器证书
- 用签发机构的公钥验证服务器公钥签名
- 用根证书(在操作系统中)验证签发机构的公钥的签名
- 验证主机名
客户端和服务器协商对称密钥
- 客户端用公钥加密发送Pre-Master-Secret
- 客户端和服务器端分别通过客户端随机数、服务器随机数、Pre-Master-Secret各自计算出Master Secret
- 通过Master Secret算出:
- 客户端加密密钥
- 服务器端加密密钥
- 客户端MAC Secret
- 服务器端MAC Secret
- 客户端发送通知:将使用加密通信
- 使用服务器端加密密钥将以上内容加密发送给服务器端
- 客户端发送Finished
- 服务器发送通知:将使用加密通信
- 使用客户端加密密钥将以上内容发送给客户端
- 服务器发送Finished
使用对称密钥开始通信
- 客户端使用服务器密钥加密数据,服务器使用客户端密钥加密数据