早期以信息发布为主的Web 1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要业务往线上转移, 站对用户隐私和安全性也越来越重视。对于防止恶意监听、中间人攻击、恶意劫持篡改,HTTPS是目前较为可行的方案,全站HTTPS逐渐成为主流 站的选择。
HTTP简介
HTTP(HyperText Transfer Protocol,超文本传输协议),是一种无状态 (stateless) 协议,提供了一组规则和标准,从而让信息能够在互联 上进行传播。在HTTP中,客户端通过Socket创建一个TCP/IP连接,并连接到服务器,完成信息交换后,就会关闭TCP连接。(后来通过Connection: Keep-Alive实现长连接)
HTTP消息组成:
HTTP请求结构,响应结构如图所示:
1. HTTP头部
HTTP头部由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,如:accept、accept-encoding、cookie等。http头后面必须有一个空行
2. 请求行
请求行由方法、URL、HTTP版本组成。
3. 响应行
响应行由HTTP版本、状态码、信息提示符组成。
HTTP2.0和HTTP1.X相比的新特性
HTTP安全问题
HTTPS协议
HTTPS 是最流行的 HTTP 安全形式。使用 HTTPS 时,所有的 HTTP 请求和响应数据在发送到 络之前,都要进行加密。 HTTPS 在 HTTP 下面提供了一个传输级的密码安全层——可以使用 SSL,也可以使用其后继者——传输层安全(TLS)。
相关术语
TLS/SSL协议
TLS/SSL协议包含以下一些关键步骤:
TLS/SSL协议核心就三大步骤:认证、密钥协商、数据加密。
RSA握手
握手阶段分成五步:
- 客户端给出协议版本 、生成的随机数(Client random),以及客户端支持的加密方法。
- 服务端确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数。
- 客户端确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给服务器。
- 服务器使用自己的私钥,获取客户端发来的随机数(Premaster secret)。
- 双方根据约定的加密方法,使用前面的三个随机数,生成会话密钥(session key),用来加密接下来的对话过程。
握手阶段有三点需要注意:
- 生成对话密钥一共需要三个随机数。
- 握手之后的对话使用对话密钥(session key)加密(对称加密),服务器的公钥和私钥只用于加密和解密对话密钥(session key)(非对称加密),无其他作用。
- 服务器公钥放在服务器的数字证书之中。
DH握手
RSA整个握手阶段都不加密,都是明文的。因此,如果有人窃听通信,他可以知道双方选择的加密方法,以及三个随机数中的两个。整个通话的安全,只取决于第三个随机数(Premaster secret)能不能被破解。为了足够安全,我们可以考虑把握手阶段的算法从默认的RSA算法,改为 Diffie-Hellman算法(简称DH算法)。采用DH算法后,Premaster secret不需要传递,双方只要交换各自的参数,就可以算出这个随机数。
参考
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!