Nginx Ingress客户端证书认证失效问题咨询
客户端证书认证配置说明
当前由kubernetes/ingress-nginx维护的Nginx Ingress Controller完全支持客户端证书认证,你的配置未生效是因为缺少关键的配套注解——仅设置nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"无法触发完整的验证逻辑。
必要配置注解
- 指定验证客户端证书的CA证书Secret(必填):
该Secret需包含nginx.ingress.kubernetes.io/auth-tls-secret: "<命名空间>/<CA证书Secret名称>"ca.crt字段,存储PEM格式的CA根证书,用于校验客户端证书的合法性。 - 证书链验证深度(可选,建议配置):
控制证书链的验证层级,默认值为1,适配多数场景。nginx.ingress.kubernetes.io/auth-tls-verify-depth: "1"
额外前置条件
你的Ingress必须配置HTTPS:在spec.tls字段中绑定服务器证书Secret,客户端证书认证仅能在TLS连接上生效。
完整Ingress示例
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: client-cert-auth-ingress annotations: nginx.ingress.kubernetes.io/auth-tls-verify-client: "on" nginx.ingress.kubernetes.io/auth-tls-secret: "default/ca-root-secret" nginx.ingress.kubernetes.io/auth-tls-verify-depth: "1" spec: tls: - hosts: - your-domain.com secretName: server-tls-secret rules: - host: your-domain.com http: paths: - path: / pathType: Prefix backend: service: name: your-backend-service port: number: 80
排查要点
- 确认CA Secret格式正确:Secret类型可为
kubernetes.io/tls或Opaque,必须包含ca.crt键值对,内容为PEM格式证书。 - 检查Ingress Controller Pod日志:查看是否存在CA Secret加载失败的报错(如权限不足、Secret不存在)。
- 确认控制器类型:若你使用的是NGINX官方维护的nginx-ingress-controller,注解格式会不同(对应
nginx.org/client-certificate-secret和nginx.org/verify-client),这也是你在NGINX官方文档找不到对应注解的原因。
内容的提问来源于stack exchange,提问作者ROSS XIE
相关产品推荐
相关产品推荐

