浅谈 HTTPS
1、什么是 HTTPS ?
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)即 超文本传输安全协议,是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过 传输加密 和 身份认证 保证了传输过程的安全性 。 而 传输加密 和 身份认证 的保证是通过在 HTTP 的基础上加入一层 加密 / 身份认证层(SSL / TLS)实现的。
补充:
SSL(Secure Sockets Layer)即 安全套接层协议、TLS(Transport Layer Security)即 安全传输层协议,都是为 网络通信 提供 安全及数据完整性 的一种安全协议,都是在 运输层(传输层)与应用层 之间对 网络连接 进行加密。
历史背景:在 SSL 更新到 3.0 时,IETF 对 SSL 3.0 进行了 标准化,添加了少数机制(但基本与 SSL 3.0 无异),并将其改名为 TLS 1.0,可以说 TLS 就是 SSL 的升级版。
现在绝大部分浏览器都不支持 SSL,而是支持 TLS,但由于 SSL 名气太大了,以至于很多人都会把这两个名字进行混用。
2、加密 ?
现代的 密码体制 分为两种:
- 对称密钥密码体制:加密密钥 与 解密密钥 是使用相同的密码体制
- 公钥密码体制:加密密钥 与 解密密钥 是使用不同的密码体制
分别对应 对称加密 和非对称加密。
2.1、对称加密
发送方和接收发都使用 同样的规则(密钥) 对数据进行加密或解密,即是对称加密。而 对称加密 的 保密性 就取决于对 密钥 的保密,一旦 密钥 泄露,数据 也无保密性可言。
2.2、非对称加密
接收方 本身拥有成对的 公钥 和 私钥,接收方先对 公钥 进行公布,发送方接收到 公钥 之后,对 要发送的数据 使用 公钥 进行加密,接收方接收到加密后的数据之后使用 私钥 对该数据进行解密,即是非对称加密。
但 非对称加密 就真的安全了吗?不,它还会遇到一个问题:中间人攻击问题。
补充:中间人攻击
3、证书 —— 破解中间人攻击
为了破解中间人攻击,服务端可以向 CA(Certificate Authority)即 证书授权中心 申请 SSL证书(本质是 TLS证书),SSL证书 不仅记录了网站的域名、创建时间等,更重要的是记录了该网站特定的 公钥 和 私钥(破解了中间人的 伪造公钥,进而瓦解中间人攻击)。
服务端 申请完 SSL证书之后,客户端 访问的协议也从 HTTP 变成了 HTTPS,端口 也从 80 变成 443 。
4、TLS 的工作过程
- 协商加密算法
- 服务器鉴别
- 会话密钥计算
- 安全数据传输
注:
加密套件:用于在 SSL / TLS 握手期间协商安全设置的算法的组合。
比较常见的算法组合:
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
5、HTTPS 的工作过程
- 建立 TCP 连接
- 建立 TLS 连接
- 进行 HTTP 通信
- 释放 TCP 连接
- 释放 TLS 连接