Kubernetes中Nginx Controller的TLS版本问题求助
按照教程部署Nginx Ingress Controller和cert-manager后,自定义HTTPS域名https://nginx-ing-poc.ncats.io/访问时触发TLS版本兼容错误,curl报错信息如下:
lij43@NCATS-2170711-M ~ % curl -v -I https://nginx-ing-poc.ncats.io/
- Trying 52.72.56.47:443...
- Connected to nginx-ing-poc.ncats.io (52.72.56.47) port 443 (#0)
- ALPN, offering h2
- ALPN, offering http/1.1
- successfully set certificate verify locations:
- CAfile: /etc/ssl/cert.pem
- CApath: none
- (304) (OUT), TLS handshake, Client hello (1):
- error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version
- Closing connection 0
curl: (35) error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version
NLB域名可正常访问,cert-manager配置无异常,期望返回教程中echo1的内容。
1. 检查Nginx Ingress的TLS协议配置
Nginx Ingress Controller的默认TLS协议配置可能与客户端不兼容,查看其ConfigMap:
kubectl get configmap -n ingress-nginx nginx-ingress-controller -o yaml
确认ssl-protocols字段是否包含TLSv1.2 TLSv1.3这类通用兼容版本。若配置缺失或仅包含旧版协议,更新ConfigMap:
kubectl edit configmap -n ingress-nginx nginx-ingress-controller
修改或添加以下内容:
data: ssl-protocols: "TLSv1.2 TLSv1.3"
保存后重启Ingress Controller Pod生效:
kubectl rollout restart deployment -n ingress-nginx nginx-ingress-controller
2. 验证NLB与Ingress的端口映射
确认NLB的443端口是否正确转发到Ingress Controller的443端口,查看Service配置:
kubectl get service -n ingress-nginx ingress-nginx-controller -o yaml
检查spec.ports部分,确保HTTPS端口(443)的targetPort指向容器的https端口(通常为443)。
3. 核对Ingress资源的TLS关联配置
确认Ingress资源已正确绑定cert-manager生成的证书Secret:
kubectl get ingress <你的Ingress名称> -o yaml
检查tls字段是否包含正确的域名和Secret名称:
tls: - hosts: - nginx-ing-poc.ncats.io secretName: nginx-ing-poc-tls
同时验证Secret存在且包含有效证书:
kubectl get secret nginx-ing-poc-tls -o yaml
确认data字段下的tls.crt和tls.key不为空。
4. 测试指定TLS版本的兼容性
用指定TLS版本的curl命令测试,确认是否为协议版本不匹配:
curl -v -I --tlsv1.2 https://nginx-ing-poc.ncats.io/
若该命令可正常返回,说明服务端禁用了客户端默认尝试的旧版TLS,可调整客户端默认TLS版本,或在业务允许的前提下,在Ingress配置中启用兼容的旧版协议。
5. 查看Nginx日志定位细节
获取Ingress Controller的Pod日志,查找TLS握手失败的具体原因:
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
搜索SSL或TLS相关日志条目,定位问题根源。
内容的提问来源于stack exchange,提问作者Lucifer8740

