1. 什么是HTTPS
HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer
),基于安全套接字协议 SSL,是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
HTTP2.0和HTTP3.0都只用于HTTPS。
2. HTTPS建立SSL连接
① Client Hello
:客户端将支持 SSL 版本、加密算法、密钥交换算法等发送服务端
② Server Hello
:服务端确定 SSL 版本、算法、会话 ID 发给客户端
③ Certificate
:服务端将携带公钥的数字证书发给客户端
④ Server Hello Done
:通知客户端版本和加密套件发完,准备交换密钥
⑤ Client Key Exchange
:客户端验证证书合法性,随机生成premaster secret
用公钥加密发给服务端
⑥ Change Cipher Spec
:通知服务端后续报文采用协商好的密钥和加密套件
⑦ Finished
:客户端用密钥和加密套件计算已交互消息的Hash
值发给服务端。服务端进行同样计算,与收到的客户端消息解密比较,相同则协商成功
⑧ Change Cipher Spec
:通知客户端后续报文采用协商好的密钥和加密套件
⑨ Finished
:服务端用密钥和加密套件计算已交互消息的Hash
值发给客户端。客户端进行同样计算,与收到的服务端消息解密比较,相同则协商成功
3. HTTPS和HTTP的区别
- HTTP 协议以明文方式发送内容,数据都是未加密的,安全性较差。HTTPS 数据传输过程是加密的,安全性较好。
- HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80 端口,后者是 443 端口。
- HTTPS 协议需要到数字认证机构(Certificate Authority, CA)申请证书,一般需要一定的费用。
- HTTP 页面响应比 HTTPS 快,主要因为 HTTP 使用 3 次握手建立连接,客户端和服务器需要握手 3 次,而 HTTPS 除了 TCP 的 3 次握手,还需要经历一个 SSL 协商过程。
参考: