无法在新的 AWS gRPC ELB 上建立不安全的 gRPC 连接

问题描述

AWS ALB 根据此 Link

新增了对 gRPC 负载平衡的支持

所有说明都表明在客户端和服务器之间使用 ssl 连接。现在,如果客户端是浏览器,这可能是必需的,但在内部 ALB 和内部服务通信的情况下,我不希望有安全连接

这可能吗/有没有人有更多关于如何在没有 ssl 的情况下进行负载平衡的信息?

我的理解: 选择您的域名,生成证书。为此在 Route 53(相同域名)中添加别名并使用客户端和服务器中的证书在内部 ELB 中进行服务内通信。

这是唯一可能的方法吗?我还必须管理此证书。

解决方法

砰! ALB 支持 GRPC 请求的 TLS 终止需要什么配置?我更愿意避免防火墙/ALB 背后的加密开销。

Bloom RPC 产生此异常:

{ "error": "14 UNAVAILABLE: 无法连接到所有地址" }

GRPC 因此异常而失败:

2020-12-29 03:03:33.345 INFO 3719 --- [-worker-ELG-6-1] i.g.n.NettyServerTransport.connections:传输失败 12 月 29 日 03:03:33 ip-172-31-22-196 网络:io.netty.handler.codec.http2.Http2Exception:HTTP/2 客户端前言字符串丢失或损坏。接收字节的十六进制转储:16030100ac010000a80303496e418aff3efff4c9244b9ae2

Connection Error io.netty.handler.codec.http2.Http2Exception: HTTP/2 client preface string missing or corrupt. Hex dump for received bytes:

,

尝试了很多东西后,这是我的结论。

  1. 您不能向 AWS ALB 发出不安全的 gRPC 请求。
  2. 您可以从 AWS ALB 向目标组发出不安全的 gRPC 请求。

所需步骤:

服务器端: 不需要 SSL。您可以在不安全的通道上启动服务器。

客户端: ssl 是必需的。 new ClientClass(<Route 53 endpoint which maps to AWS ALB Endpoint>,credentials.createSsl());

确保 AWS ALB 上的证书与 aws alb 的 Route 53 别名端点匹配。

结论: 客户端通过 ALB 颁发给客户端的证书向 ALB 发出请求。 ALB 向 TG 发出不安全的请求(转发到在不安全通道上侦听的服务器) ) 您还可以将 ALB 到 TG 请求设为安全,这将更改服务器端 SSL