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

如何为Helm安装的ingress-nginx配置通配符TLS证书解决Fake证书问题

问题原因及解决方案

核心问题原因

返回默认Fake证书的问题,最常见的是Helm配置参数使用错误,以下是所有可能的原因及对应修复方案:

1. 全局默认证书配置参数错误

controller.wildcardTLS.cert 不是配置Ingress无secretName时 fallback 的全局默认证书参数,该参数仅用于多通配符证书的特定匹配场景。正确的全局默认证书参数为 controller.extraArgs.default-ssl-certificate。

2. Secret资源异常

  • Secret未创建在ingress-nginx命名空间下,或密钥、证书内容不匹配、格式错误
  • 通配符证书的SAN字段未覆盖*.example.com,无法匹配myservice.example.com域名

3. Ingress版本兼容问题

你使用的networking.k8s.io/v1beta1版本Ingress在K8s 1.19+版本已正式废弃,高版本ingress-nginx对该旧版本API的适配存在兼容问题,可能导致TLS配置不生效。

4. Ingress Controller配置未加载

控制器Pod加载证书时出现报错,比如无Secret读取权限、证书格式解析失败等,可通过Pod日志排查具体错误。


修复步骤

步骤1:修正Ingress-Nginx的Helm配置

执行升级命令替换错误的参数:

helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx \
  --set controller.extraArgs.default-ssl-certificate=ingress-nginx/example-com-certificate \
  --set controller.service.loadBalancerIP=10.0.0.1

步骤2:验证Secret有效性

执行以下命令确认证书配置正确:

# 确认Secret存在
kubectl get secret -n ingress-nginx example-com-certificate
# 验证证书域名覆盖范围
kubectl get secret -n ingress-nginx example-com-certificate -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -noout -text | grep DNS:

确认输出包含*.example.com或myservice.example.com。

步骤3:更新Ingress为v1版本(K8s 1.19+适用)

替换Ingress配置为官方支持的稳定版本:

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: myservice-ingress
  namespace: myservice
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/ingress.allow-http: "false"    
    nginx.ingress.kubernetes.io/backend-protocol: "http"
    nginx.ingress.kubernetes.io/default-backend: myservice
spec:  
  tls:  
  - hosts:
    - myservice.example.com
    # secretName省略,使用全局默认证书
  rules:
  - host: myservice.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myservice
            port:
              number: 80

步骤4:验证控制器配置

查看Ingress Controller的启动参数,确认已添加默认证书配置:

kubectl get deployment -n ingress-nginx ingress-nginx-controller -o yaml | grep default-ssl-certificate

同时查看Pod日志排查是否有证书加载错误:

kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:00