HTTP与HTTPS
1、HTTP
-
HTTP是超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议。常基于TCP/IP写于传输数据,互联网上英语最为广泛的一种网络协议,所有的www文件都必须遵循这个标准。设计HTTP的初衷是提供一种发布和接收HTML页面的方法。
-
HTTP发展历史
版本 | 时间 | 内容 | 发展 |
---|---|---|---|
HTTP/0.9 | 1991年 | 不涉及数据包传输,规定客户端和服务器端之前的通信格式只能是GET请求 | 没有作为正式的标准 |
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加了PUT、PATCH、HEAD、OPTIONS、DELETE方法 | 正式作为标准 |
HTTP/1.1 | 1997年 | 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 | 2015年前使用最广泛 |
HTTP/2 | 2015年 | 多路复用、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
- 多路复用:通过单一的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享一个TCP连接,实现多路并行,而不是依赖建立多个TCP连接。
2、HTTPS
- HTTPS协议是以安全为目标的HTTP通道,可以理解为HTTP+SSL/TLS,HTTPS就是HTTP的安全版本,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
- HTTPS协议的主要作用
- ①建立一个信息安全通道,保证数据传输的安全;
- ②确认网站的真实性。
- HTTPS工作原理
- ①客户端发起HTTPS请求访问Web服务器:用户在浏览器中输入一个HTTPS网址,连接到服务器的443端口,要求与服务器建立SSL连接,发送的信息主要是随机值1和客户端支持的加密算法;
- ②服务器响应客户端握手信息,包括随机值2和匹配好的协商加密算法,这个加密算法一定是客户端发送给服务器端加密算法的子集;
- ③服务器传送数字证书:随即服务器给客户端发送第二个响应报文是数字证书。服务器端必须要有一套数字证书,可以自己制作,也可以向组织申请。这套数字证书其实就是一对公钥和私钥,是用来进行非对称加密使用的。服务器端传送证书其实就是
公钥
给客户端; - ③客户端解析证书:客户端收到证书(公钥)后,首先验证公钥是否有效,如果证书没有问题,就生成一个随机值(预主秘钥),用于对称加密的密钥,称之为client key;
- ④加密信息并传送加密信息:客户端认证证书通过后,通过随机值1、随机值2和预主秘钥组装会话秘钥,通过
公钥
进行非对称加密会话秘钥,形成密文(到此,HTTPS中的第一次HTTP请求结束); - ⑤传送加密信息:客户端将该密文传送给服务器端;此时,HTTPS中的第二个HTTP请求开始;
- ⑤服务器解密信息:服务器收到客户端发送的密文后,用自己的
私钥
解密得到客户端传来的随机值1、随机值2和预主秘钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文,并发送给客户端; - ⑥客户端收到服务器发送的密文后,用client key对其进行对称解密,得到服务器发送的数据。此时,HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
- HTTPS加密方式:对称加密和非对称加密的结合
- 客户端在浏览器中使用HTTPS的URL访问服务器,建立SSL连接;
- 服务器收到SSL连接,发送
非对称加密的公钥A
返回给客户端; - 客户端生成随机数,作为
对称加密的密钥B
; - 客户端使用
公钥A
,对自己生成的密钥B
进行加密,得到密钥C
,发送给服务器; - 服务器用
私钥D
对接受的密钥C进行解密,得到对称加密钥B
; - 客户端和服务器之间可以用
对称加密密钥B
进行通信。
3、HTTP 和 HTTPS的区别
- HTTPS协议需要到CA机构申请证书,一般免费证书较少,需要一定费用;
- HTTP是超文本传输协议,信息是明文传输;HTTPS是具有安全性的SSL加密的传输协议;
- HTTP和HTTPS使用的是完全不同的连接方式,端口也不同,HTTP是80,HTTPS是443;
- HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,比HTTP安全。