【发布时间】:2020-04-07 02:52:26
【问题描述】:
AWS 网络负载均衡器support TLS termination。这意味着可以在 AWS Certificate Manager 中创建证书并将其安装到 NLB,然后使用 TLS 加密的 TCP 连接将在 NLB 处解密,然后重新加密或传递给未加密的侦听器。详情在这里:https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html。
使用 AWS Certificate Manager 的好处是证书将由 AWS 自动管理和轮换。无需将面向公众的证书放在私有实例上。
我想根据 SNI 将 TCP 连接路由到 NLB,即可以根据客户端请求的服务器名称将到同一端口和 IP 的连接路由到不同的目标。虽然我可以看到 multiple TLS certificates for a given listener are supported 使用 SNI 来确定要提供哪个证书,但我看不到如何基于 SNI 配置侦听器。
因此,我将 HAProxy 放在 NLB 后面,并希望使用 SNI 路由到不同的后端。我在 NLB 与客户端终止 TLS,使用 HAProxy 上的自签名证书重新加密 NLB 和 HAProxy 之间的流量,然后使用未加密的 TCP 路由到后端。
(client) --TLS/TCP--> (NLB on port 443) --TLS/TCP--> (AWS target group on port 5000, running HAProxy) --TCP--> backends on different IPs/ports
AWS NLB 是否将 SNI 详细信息传递给目标组?
如果我直接连接到 HAProxy(不是通过 NLB),那么我可以使用 SNI 路由到选择的后端,但如果我通过 NLB 连接,我无法让 SNI 路由工作。
【问题讨论】:
-
没错,我想要类似的功能来路由到多个目标组,每个证书一个。
-
仍然面临同样的问题 - 我正在使用显示 TLS 接受的 istio 网关(特使),但没有 SNI 来完成与路由相关的 istio 帖子discuss.istio.io/t/…
标签: amazon-web-services ssl tcp amazon-elb sni