gpt4 book ai didi

tls1.2 - 服务器中不支持 ALPN 的 HTTP/2 h2

转载 作者:行者123 更新时间:2023-12-04 12:44:50 24 4
gpt4 key购买 nike

阅读 HTTP/2 RFC (#7540) 后和 TLS-ALPN RFC (#7301) ,我还是不能
找出一端缺乏 ALPN 时的预期行为。
假设我有一个使用 HTTP/2“h2”(通过 TLS)的客户端,它与支持 HTTP/2 的服务器通信,但不在“服务器问候”中发送 ALPN 扩展。
客户端的预期行为是什么?
到目前为止,我见过的大多数客户端都认为服务器不支持 HTTP/2,并将连接降级到 http/1.1,但很少有人忽略(go-gRPC)继续使用 HTTP/2。
如果使用在客户端 (“h2”) 到服务器 (“h2c”) 之间执行 SSL 终止的 AWS 经典 LB,则此场景可能更实用。在这个例子中,客户端发送值为“h2”的 ALPN 扩展,LB 在没有 ALPN 的情况下执行 SSL 握手(正如他的预期),最终由于 HTTP/1.1 降级,JAVA gRPC 失败。

最佳答案

回答问题,不用alpn,但是用npn,还是可以支持grpc的。

二澄清,

  • grpc 的 http2 协商可以通过 alpn 或 npn 进行。
    如果客户端支持 alpn,它会在 Client Hello 中发送 alpn 扩展和 npn 扩展。
    如果服务器支持 alpn,服务器只响应 alpn 和 h2。如果不支持 alpn 并且 npn 在“服务器 LB 配置”中配置,它将发送 npn 和 h2。
    如果不配置 alpn,我在 haproxy 和 nginx 中注意到的,除非配置,否则它不会默认为 npn。
  • grpc 客户端坚持使用 h2。如果 alpn 或 npn 与 h2 都不发生,客户端将断开连接,因为它假定不支持 h2,并且 h2 对于 grpc
  • 是必需的

    关于tls1.2 - 服务器中不支持 ALPN 的 HTTP/2 h2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758705/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com