ZBLOG

http可以使用2.0吗?没有TLS

是的,HTTP/2 可以直接在明文 HTTP 上运行(称为 h2c,即 HTTP/2 over TCP),无需 TLS 加密。但需要注意以下关键点:


1. 技术可行性

  • h2c 协议:HTTP/2 规范(RFC 7540)明确支持通过非加密的 TCP 连接运行(明文传输),无需 HTTPS。
  • 适用场景
    • 内网服务通信(如微服务间调用)。
    • 开发测试环境。
    • gRPC 的某些非加密模式。

2. 现实限制

  • 浏览器不支持:所有主流浏览器(Chrome、Firefox等)仅允许通过 HTTPS 使用 HTTP/2。若网站为 HTTP,浏览器会降级到 HTTP/1.1。
  • 服务器配置:需显式启用 h2c(默认不开启)。例如:
    1. server {
    2. listen 80 http2; # 明文 HTTP/2
    3. # ...
    4. }
  • 安全性风险:明文传输易受中间人攻击(如劫持、篡改),生产环境强烈建议使用 HTTPS。

3. 如何测试 h2c

  • 使用工具
    1. curl --http2-prior-knowledge http://example.com
    或通过支持 h2c 的客户端库(如 gRPC、Go/Python 的 HTTP/2 库)。

4. 与 gRPC 的关系

  • gRPC over HTTP/2 默认要求 TLS,但可通过 insecure 模式强制使用 h2c
    1. conn, _ := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))

总结

  • 能用吗?
    可以,技术上支持无 TLS 的 HTTP/2(h2c),但仅限于特定场景(如内网、开发)。
  • 该用吗?
    生产环境务必使用 HTTPS + HTTP/2(h2),否则无法兼容浏览器且存在安全风险。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8000

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?