HTTPS的基本认识
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和[身份认证]保证了传输过程的安全性
HTTP的缺点
- 无状态
- 明文传输
- 不安全
HTTP与HTTPS的区别
-
HTTP 是超⽂本传输协议,信息是明⽂传输,存在安全⻛险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在
TCP 和 HTTP ⽹络层之间加⼊了 SSL/TLS 安全协议,使得报⽂能够加密传输
-
HTTP 连接建⽴相对简单, TCP 三次握⼿之后便可进⾏ HTTP 的报⽂传输。⽽ HTTPS 在 TCP 三次握⼿之
后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输
-
HTTP 的端⼝号是 80,HTTPS 的端⼝号是 443
-
HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的
HTTPS解决的问题
- 窃听风险,HTTP是明文传输,通行内容很容易被窃取
- 篡改风险,强制植⼊垃圾⼴告,视觉污染
- 冒充风险,冒充知名网站,如京东,淘宝
HTTPS解决的方案
混合加密
- 在SSL/TLS握手中,使用非对称加密算法加密
- 在SSL/TLS握手后,使用对称加密算法加密
SSL协议基本流程
- 客户端向服务器索要并验证服务器的公钥
- 双⽅协商⽣产「会话秘钥」
- 双⽅采⽤「会话秘钥」进⾏加密通信
摘要算法
- 摘要算法⽤来实现完整性,能够为数据⽣成独⼀⽆⼆的「指纹」,⽤于校验数据的完整性,解决了篡改的⻛险
数字证书
- 将服务器公钥放在数字证书,防止客户端在获取服务器公钥的时候被篡改
HTTPS建立连接的过程
第一次握手
-
客户端发起ClientHello
- 服务器随机数C
- 支持的TLS版本
- 支持的加密套件
第二次握手
-
服务器回应ServerHello
- 服务器随机数S
- 确认使用的加密通信协议版本
- 确认使用的加密方法
- 服务器证书
第三次握手
-
客户端回应
- 验证证书的合法性
- 如果证书受信任,则发送经过服务器公钥加密的随机数
- 以后的通信使用会话秘钥加密发送
- 之前所有握手信息的摘要
第四次握手
-
服务端回应
- 确认收到
- 以后的通信使用会话秘钥加密发送
- 之前所有握手信息的摘要
\