You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx Ingress Controller为Ingress返回虚假证书的排查求助

排查Kubernetes Ingress返回虚假证书问题的步骤

1. 核对Ingress TLS配置细节

  • 检查bad.xyz.com对应的Ingress的tls块,确认hosts字段完全匹配域名,无拼写错误(如大小写、多余空格、后缀错误)
  • 确认tls.secretName指向的Secret名称、命名空间完全正确,若Secret与Ingress不在同一命名空间,需确认Ingress Controller具备跨命名空间读取Secret的权限

2. 验证Secret的有效性与一致性

  • 导出Secret内容对比:kubectl get secret <bad-secret-name> -n <namespace> -o yaml,与good.xyz.com对应的Secret的data.tls.crt、data.tls.key的base64编码完全一致,避免编码时引入多余换行或字符
  • 解码证书检查SAN字段:echo "<tls.crt的base64内容>" | base64 -d | openssl x509 -text -noout,确认证书的Subject Alternative Name包含bad.xyz.com——这是最常见的触发默认证书的原因

3. 检查Ingress与Controller状态

  • 查看Ingress事件日志:kubectl describe ingress <bad-ingress-name> -n <namespace>,确认Events中无SecretNotFound、InvalidCertificate等报错
  • 确认Ingress Controller Pod状态:kubectl get pods -n <ingress-controller-namespace>,确保所有Pod处于Running状态,无频繁重启
  • 检查Ingress Controller启动参数,确认--default-ssl-certificate是否指向自签名证书——当Ingress TLS配置失效时,Controller会 fallback 到该默认证书

4. 验证Nginx配置生成结果

  • 进入Ingress Controller Pod:kubectl exec -it <ingress-pod-name> -n <ingress-controller-namespace> -- /bin/bash
  • 搜索bad.xyz.com对应的Nginx server块(通常在/etc/nginx/conf.d/或/etc/nginx/nginx.conf中),检查ssl_certificate和ssl_certificate_key是否指向正确的Secret挂载路径,而非默认证书路径
  • 排查是否存在优先级更高的Ingress(如通配符*.xyz.com)覆盖了bad.xyz.com的配置

5. 网络层面验证

  • 直接指定Ingress Controller IP访问:curl -v https://bad.xyz.com --resolve bad.xyz.com:443:<ingress-controller-ip>,排除DNS解析错误导致请求打到其他服务的可能
  • 检查集群防火墙、云厂商负载均衡配置,确认443端口流量正确转发到Ingress Controller Service

常见修复动作

  • 若证书SAN缺失:重新签发包含bad.xyz.com的证书,更新对应Secret
  • 若Ingress配置错误:修正tls.hosts或tls.secretName字段,等待Ingress Controller刷新配置
  • 若配置未加载:重启Ingress Controller Pod强制刷新Nginx配置:kubectl rollout restart deployment <ingress-controller-deployment> -n <ingress-controller-namespace>

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:06:06