HTTP/2 协议(Wireshark 抓取浏览器加密的 HTTP2)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: HTTP/2 协议(Wireshark 抓取浏览器加密的 HTTP2)

1.HTTP/1.1 面临的问题

  • 从几 KB 大小的消息,到几 MB 大小的消息。
  • 每个页面小于 10 个资源,到每页面 100 多个资源。
  • 从文本为主的内容,到富媒体(如图片、声音、视频)为主的内容。
  • 对页面内容实时性要求的应用越来越多。
  • 高延迟带来页面加载速度的降低。
  • 随着带宽的增加,延迟并没有显著下降。
  • 并发连接有限。
  • 同一连接同时只能在完成一个 HTTP 事务(请求/响应)才能处理下一个事务。
  • 単连接上的串行请求
  • 无状态导致的高传输量(低网络效率)
  • HTTP/1.1 不支持服务器推送消息

2.HTTP/2 特性

  • SPDY(2012-2016)
  • HTTP2(RFC7540,2015.5)
  • 在应用层上修改,基于并充分挖掘 TCP 协议性能
  • 客户端向 server 发送 request 这种基本模型不会变
  • 老的 scheme 不会变,没有 http2://
  • 使用 http/1.x 的客户端和服务器可以无缝的通过代理方式转接到 http/2 上
  • 不识别 http/2 的代理服务器可以将请求降级到 http/1.x

3.HTTP/2的应用情况

  • 截止 2015.5.17 号,互联网上使用 HTTP/2协议的站点已经达到 37.2%
  • 快速推广的原因:未改变 HTTP/1.1 的语义,基于 TCP,仅在应用层变动

4.HTTP/2 主要特性

  • 传输数据量的大幅减少:以二进制方式传输,标头压缩
  • 多路复用及相关功能:消息优先级
  • 服务器消息推送:并行推送

5.Chrome 浏览器检测 HTTP/2 插件

  • HTTP/2 and SPDY indicator

Tips:该插件可以坚持某个网站是否支持 HTTP/2

6.TLS1.2 的加密算法

  • 常见加密套件。

  • 对称加密算法:AES_128_GCM:每次建立连接后,加密密钥都不一样。
  • 密钥生成算法 ECDHE:客户端与服务器通过交换部分信息,各自独立生成最终一致的密钥。

7.Wireshark 如何解密 TLS 消息?

  • 原理:获得 TLS 握手阶段生成的密钥,通过 Chrome 浏览器 DEBUG 日志中的握手生成密钥
  • 步骤:1.配置 Chrome 输出 DEBUG 日志,配置环境变量 SSLKEYLOGFILE,在 Wireshark 中配置解析 DEBUG 日志,编辑->首选项->Protocols->TLS/SSL

步骤1:打开环境变量

步骤2:新建用户变量 SSLKEYLOGFILE,路径如 E:\soft\Chrome\mytestssl.txt:

步骤3:打开 Wireshark 中的 编辑->首选项->Protocols->TLS->(Pre)-Master-Secret log filename 浏览选择上述生成的文件:

步骤4:Chrome 浏览器访问支持 HTTP2 协议的网站,如 sina.com.cn 之后 E:\soft\Chrome\mytestssl.txt 文件中就会打印 Chrome 产生的密钥:

Tips:图中文件记录了 Chrome 浏览器每次请求产生密钥。

步骤5:以抓取浏览器访问 sina.com.cn 首页为例,抓取到的报文如下:

Tips:如图出现了 HTTP2 就表示解密成功,若没有解密成功只会看到 TLS相关的报文。

8.HTTP/2 是不是必须基于 TLS/SSL 协议?

  • IETF 标准不要求必须基于 TLS/SSL 协议。
  • 浏览器要求必须基于 TLS/SSL 协议。
  • TLSALPN(Application Layer Protocol Negotiation) 扩展作协商,只认 HTTP/1.x 的代理服务器不会干扰 HTTP/2
  • schema:http://https:// 默认基于 80443 端口。
  • h2:基于 TLS 协议运行的 HTTP/2 被称为 h2
  • h2c:直接在 TCP 协议之上运行的 HTTP/2 被称为 h2c
相关文章
|
5月前
|
JSON Java 数据安全/隐私保护
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
320 1
|
2月前
|
Web App开发 存储
常见抓包工具配置抓取HTTPS
常见抓包工具配置抓取HTTPS
|
2月前
|
Web App开发
Chrome浏览器导出HTTPS证书
Chrome浏览器导出HTTPS证书
43 0
Chrome浏览器导出HTTPS证书
|
3月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
71 10
|
3月前
|
存储 网络安全 数据安全/隐私保护
[flask]使用mTLS双向加密认证http通信
【7月更文挑战第16天】在Flask应用中实现mTLS双向TLS加密认证可增强HTTP通信安全性。步骤包括: 1. 使用OpenSSL为服务器和客户端生成证书和密钥。 2. 配置Flask服务器使用这些证书: - 安装`flask`和`pyopenssl`. - 设置SSL上下文并启用mTLS验证: 注意事项: - 保持证书有效期并及时更新. - 确保证书链信任. - 充分测试mTLS配置.
|
2月前
|
安全 网络安全 数据安全/隐私保护
[flask]使用mTLS双向加密认证http通信
[flask]使用mTLS双向加密认证http通信
|
2月前
|
网络协议 应用服务中间件 Go
[golang]使用mTLS双向加密认证http通信
[golang]使用mTLS双向加密认证http通信
|
4月前
|
Web App开发 存储 网络安全
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
本文介绍了在 Mac 上使用的 HTTP 和 HTTPS 抓包工具 Charles 的配置方法。首先,强调了安装证书对于抓取 HTTPS 请求的重要性,涉及 PC 和手机端。在 PC 端,需通过 Charles 软件安装证书,然后在钥匙串访问中设置为始终信任。对于 iOS 设备,需设置 HTTP 代理,通过电脑上的 IP 和端口访问特定网址下载并安装证书,同时在设置中信任该证书。配置 Charles 包括设置代理端口和启用 SSL 代理。完成这些步骤后,即可开始抓包。文章还提及 Android 7.0 以上版本可能存在不信任用户添加 CA 证书的问题,但未提供解决办法。
799 0
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
|
3月前
|
数据安全/隐私保护
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
65 0
|
5月前
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
287 0
下一篇
无影云桌面