HTTPS
大约 2 分钟
HTTP
VS HTTPS
HTTP
特点:
- 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
- 无连接:
HTTP/1.1
之前,由于无状态特点,每次请求需要通过TCP
三次握手四次挥手,和服务器重新建立连接 - 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
- 通信使用明文,请求和响应不会对通信方进行确认、无法保证数据的完整性
针对无状态的一些解决策略:
- 通过
Cookie
/Session
技术 HTTP/1.1
持续连接(HTTP keep-alive
)方法,只要任意一端没有明确提出断开连接,则保持TCP
连接状态
HTTP
有以下安全性问题:
- 使用明文进行通信,内容可能会被窃听;
- 不验证通信方的身份,通信方的身份有可能遭遇伪装;
- 无法证明报文的完整性,报文有可能遭篡改。
HTTPS
特点:
基于 HTTP
协议,通过 SSL
或 TLS
提供加密处理数据、验证对方身份以及数据完整性保护。
内容加密:采用混合加密技术,中间者无法直接查看明文内容
混合加密是结合非对称加密和对称加密技术。客户端使用对称加密生成密钥对传输数据进行加密,然后使用非对称加密的公钥再对密钥进行加密。即使被黑客截取,由于没有私钥,无法获取到加密明文的秘钥,便无法获取明文数据。
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改
- 收方能够证实发送方的真实身份
- 发送方事后不能否认所发送过的报文
- 收方或非法者不能伪造、篡改报文
非对称加密过程需要用到公钥进行加密,公钥就被包含在数字证书中,数字证书通常来说是由受信任的数字证书颁发机构 CA
,在验证服务器身份后颁发。证书中包含了一个密钥对(公钥和私钥)和所有者识别信息。
HTTPS
并不是新协议,而是让 HTTP
先和 SSL
(Secure Sockets Layer
)通信,再由 SSL
和 TCP
通信,也就是说 HTTPS
使用了隧道进行通信。
通过使用 SSL
,HTTPS
具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。