K8S 网关求助, 兼容老 HTTP 协议和老 TLS 版本 - V2EX
soleils
·
2026-03-23
·
via V2EX
这是一个创建于 83 天前的主题,其中的信息可能已经有所发展或是发生改变。
客户大多数是银行的, 某些用的请求库都很老
最近我们迁移云资源, 在新 K8S 里用了 envoy-gateway 1.6.5, 问 Gemini 说可以通过设置:
tls:
minVersion: "1.0"
maxVersion: "1.3"
来兼容 TLS1.0, http 设置了 http10: {}来兼容, 我本地用 curl 测试也没问题(后来发现没用).
上线后少数银行客户报错: 要不然是 426, 要不然是 SSL 握手有问题. 现在我蛋疼的要死, 不能因为少部分客户又切回老云, 但线上想换 treafik 又来不及了, 现在怎么办
(还是应该敬畏生产环境)
k8s TLS 兼容8 条回复 • 2026-03-24 15:41:09 +08:00
 |
|
1
SingeeKing 3 月 23 日
加一下 GODEBUG=tlsrsakex=1 环境变量试试,因为新版本 Go 老的加密算法默认禁用
|
 |
|
3
v1 3 月 24 日
apiVersion: gateway.envoyproxy.io/v1alpha1 kind: EnvoyProxy metadata: name: eg-proxy-config namespace: default spec: tls: minVersion: "1.0" maxVersion: "1.3" ciphers: # 要显式包含 TLS1.0 的加密套件 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA - AES128-SHA - ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - AES256-SHA - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 ----- apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: eg namespace: default spec: gatewayClassName: eg envoyProxy: name: eg-proxy-config # 必须引用才可生效 listeners: - name: https port: 443 protocol: HTTPS tls: mode: Terminate certificateRefs: - kind: Secret name: example-cert
|
 |
|
4
soleils 3 月 24 日
@v1 apiVersion: gateway.envoyproxy.io/v1alpha1 kind: ClientTrafficPolicy metadata: name: legacy-http10-temp namespace: envoy-gateway-system spec: targetRefs: - group: gateway.networking.k8s.io kind: Gateway name: my-gateway sectionName: https-cn - group: gateway.networking.k8s.io kind: Gateway name: my-gateway sectionName: https-com http1: http10: {} tls: minVersion: "1.0" maxVersion: "1.3" alpnProtocols: - h2 - http/1.1 - http/1.0 ciphers: - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-SHA - ECDHE-RSA-AES256-SHA - AES128-SHA - AES256-SHA 我也是这样配置的, 但我用的是 kind: ClientTrafficPolicy , 你用的是 kind: EnvoyProxy, 是这个关键区别吗?
|
 |
|
5
pckillers 3 月 24 日
我比较惊奇于用户竟然能直接连接到 k8s 的网关。 k8s 之前已经没有 waf 之类的 7 层网关了? 如果有的话 TLS 与 cipher 就是 waf 决定的了。
|
 |
|
6
soleils 3 月 24 日
@pckillers 这个问题是有些客户会配置域名+host 绑定, 还会给域名和 IP 开白名单, 因为腾讯云 waf 的 vip 不保证不变, 他们说 5 月底会出一个不变 IP 的 waf vip, 但我们等不了那么久了, 所以这次没有上 waf, 只用了云防火墙
|
 |
|
7
soleils 3 月 24 日
我废了老鼻子劲终于搞懂了, 这次的兼容性问题是一些老客户端不会自动带上 SNI, 我们又有多个证书, 导致了连接被重置. 上面的设置是可以让 envoy-gateway 支持 TLS1.0 1.1 的, 原因不是设置问题 实际兼容性原因: 1, 有些客户端需要手动指定 SNI (一个 IP 多个证书) 2, 如果用了 TLS1.0 , 1.1 , 最好加上-cipher "AES256-SHA:@SECLEVEL=0"
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。