HTTP与HTTPS的区别,HTTPS提高性能,HTTP2的新特性
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
数据传输区别
http也相当于HTTP协议是超文本传输协议的意思是明文传输。属于你请求的数据不加密直接请求服务端。
https 是http的升级在应用层和传输层加了一层SSL校验层对所传输的数据进行加密进行密文传输。
安全性区别
HTTPS | HTTP | |
---|---|---|
安全性 | 高 | 低 |
数据传输 | 加密传输 | 明文传输 |
认证 | 身份认证CA证书 | 身份不确定数据可能被第三方获取 |
完整性 | 数据加密保证完整性 | 数据可能被拦截篡改 |
正确性 | 不可否认无法修改 | 无法保证数据的真实性 |
端口区别
HTTPS | HTTP | |
---|---|---|
端口 | 443 | 80 |
灵活性 | 高 | 低 |
访问速度 | 慢 | 快 |
经济适用 | 收费 | 免费 |
交互区别
HTTP---->三次握手流程为
客户端对服务端说我要连接你
服务端对客户端说我收到了
客户端往服务端发送数据
这样http的一个交互流程就完成了
HTTPS---->四次握手流程为
客户端对服务端说我要连接你
服务端我收到了并且把公钥返回给客户端
客户端拿着公钥把自己的公钥加密在发送给服务端
服务端收到公钥进行后续交互。
流程对比
HTTPS的工作流程
主要是说对称加密和非对称加密共同使用作为一个混合加密使用。
- Client发起请求端口443
- Server返回公钥证书Server中有公钥和私钥只发送公钥给Client
- Client验证证书
- Client生成对称密钥用公钥加密后发给Server
- Server使用私钥解密得到对称密钥
- C/S双方使用对称密钥加密明文并发送解密密文得到明文
混合加密流程图
HTTPS的实现原理
HTTPS实现原理包括
-
机密性
-
完整性
-
身份认证
-
不可否认
机密性
使用混合加密对称加密和非对称加密
非对称加密公钥和私钥
安全传输对称秘钥
常见算法RSAECC
常见算法效率慢速度低
完整性
完整性传输过程中数据可能被修改
发送一个与原文等价的数字摘要
摘要算法一种压缩算法hash函数
任意长度 -> 固定长度摘要字符串指纹
单向加密算法无法解密不能逆推原文
常见算法SHA-2
SHA224(28B)、SHA256(32B)、SHA384(48B)
哈希冲突的解决
再哈希法、链地址法、开放寻址法
身份认证和不可否认
数字签名防止客户端被伪装可信第三方提供的一对密钥公/私加密客户端信息
私钥加密公钥解密
签名使用私钥加密摘要得到数字签名
验证签名使用公钥解密签名得到摘要原文
对摘要加密而非原文降低运算量。压缩后再加密。
数字证书和CA可信第三方
数字证书包含序列号、用途、颁发者、有效时间等打包后生成签名
证书等级DV、OV、EV
根证书/自签名证书Root CA
HTTPS 使用流程
- 在服务端生成ca证书
生成私钥key文件
创建待签名证书csr文件 - CA机构对证书签名
生成.crt文件 - 配置应用服务器
可在nginx中配置加入ssl认证 - 在系统中安装证书
HTTPS性能优化点
- 协议优化
TLS1.2->TLS1.3协议升级
密钥交换ECDHE椭圆曲线x25519
对称加密AES_128_GCM
算法优化 - 证书优化
服务器证书RSA->ECDSA
吊销机制定期吊销CRL->在线状态OCSP - 会话复用
Session ID、Session Ticket 认证后使用UDP安全要考虑到。
PSK0-RTTPre-shared Key, PSK是预共享密钥是用于验证 L2TP/IPSec 连接的 Unicode 字符串。可以配置“路由和远程访问”来验证支持预共享密钥的 VPN 连接。 - 硬件
更快的CPU
SSL加速卡
SSL加速服务器 - 软件升级
Linux内核升级4.x
Nginx1.16+
OpenSSL1.1.0/1.1.1
HTTP2的特性
向下兼容HTTP/1
HTTP/2把HTTP分解成为了“语义”“语法”两部分其中语义层不做改动与HTTP完全一致比如说请求方法URI,状态码头字段等概念保留不变。
特别要说的是与 HTTPS 不同HTTP/2 没有在 URI 里引入新的协议名仍然用“http”表示明文协议用“https”表示加密协议。
头部压缩
HTTP 1.x 的头部带有大量信息用于描述这次通信的的资源、浏览器属性、cookie等而且每次都要重复发送。HTTP/2 使用encoder来减少需要传输的header大小。即
HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的 键-值 对对于相同的数据不再通过每次的请求和响应发送
首部表在HTTP/2的连接存续期内始终存在由客户端和服务器共同渐进更新;
每个新的首部 键-值 对要么被追加到当前表的末尾要么替换表中之前的值。
简单理解
请求1 发送了所有的头部字段请求2 则只需要发送差异数据就行了这样可以减少冗余数据降低开销。
二进制
HTTP/2 采用二进制格式传输数据而非 HTTP 1.x 的文本格式。HTTP/2将所有传输信息分割为更小的消息和帧并对它们采用二进制格式的编码将其封装新增的二进制分帧层同时也能够保证 http 的各种动词方法首部都不受影响兼容上一代http标准。其中HTTP 1.X中的首部信息 header 封装到 Headers 帧中而request body 被封装到Data帧中。
HTTP/2 中同域名下所有通信都在单个连接上完成该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送而消息又由一个或多个帧组成。多个帧之间可以乱序发送根据帧首部的流标识可以重新组装。
虚拟流、多路复用
HTTP 1.x 中客户端浏览器在同一时间针对同一域名下的请求会有一定数量的限制超过限制数目的请求会被阻塞。且如果想并发多个请求必建立多个 TCP 链接。
在 HTTP/2 中有了新的分帧机制后它将不再依赖 TCP 连接去实现多流并行了在 HTTP/2中
同域名下所有通信都在单个连接上完成
单个连接可以承载任意数量的双向数据流
数据流以消息的形式发送而消息又由一个或多个帧组成多个帧之间可以乱序发送因为可以根据帧首部的流标识重新组装。
这一特性带来了性能上的提升
同个域名只需要占用一个 TCP 连接消除了因多个 TCP 连接而带来的延时和内存消耗
单个连接上可以并行交错的请求和响应之间互不干扰
在HTTP/2中每个请求都可以带一个31bit的优先值0表示最高优先级 数值越大优先级越低。有了这个优先值客户端和服务器就可以在处理不同的流时采取不同的策略以最优的方式发送流、消息和帧。