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

Ingress配置客户端证书链遇403 Forbidden错误求助

问题解决:NGINX Ingress客户端证书认证提示证书未找到导致403

问题根源

NGINX Ingress Controller对用于客户端证书验证的Secret有严格要求:

  • 必须使用**tls类型**的Secret,而非generic类型
  • Secret中必须包含名为ca.crt的字段,存储信任的CA证书链
    你之前创建的generic Secret不符合控制器的识别规则,因此提示证书未找到。

解决方案步骤

1. 删除无效的旧Secret

先清理之前创建的generic类型Secret:

kubectl delete secret auth-tls-chain -n default
kubectl delete secret ca-secret -n default

2. 创建符合要求的TLS类型Secret

NGINX Ingress要求验证客户端证书的Secret必须是tls类型,且证书链需放在ca.crt字段中。执行以下命令创建:

# 直接使用你的证书链文件创建tls Secret,key参数可复用证书链文件(CA验证不需要私钥)
kubectl create secret tls auth-tls-chain --cert=org_client_chain.pem --key=org_client_chain.pem -n default

3. 验证Secret配置

确认Secret中已正确包含ca.crt字段:

kubectl get secret auth-tls-chain -n default -o jsonpath='{.data.ca\.crt}' | base64 -d

执行后应输出你的完整PEM格式证书链。

4. 刷新Ingress配置

重新应用Ingress配置,或重启Ingress Controller以确保配置生效:

kubectl apply -f your-ingress-file.yaml
# 可选:强制重启Ingress Controller加速配置刷新
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx

补充说明

  • 你的证书链PEM格式是正确的(包含多个证书块),但需确保顺序是从直接签发客户端证书的中间CA到根CA(即最上方的证书是离客户端证书最近的CA,最下方是根CA)。
  • auth-tls-secret注解中的default/auth-tls-chain路径无需修改,只要Secret名称和命名空间正确即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:01:07