如何通过cert-manager在Kubernetes中正确配置TLS排查证书无效错误
问题根因
你当前使用的ClusterIssuer配置对接了Let's Encrypt测试环境(staging)接口,该环境签发的证书仅用于功能验证,不会被浏览器、操作系统的公共根证书信任库收录,因此会直接触发NET::ERR_CERT_AUTHORITY_INVALID报错,你执行openssl查询到的证书链中所有CA名称均携带(STAGING)前缀就是最直接的证据。
解决步骤
- 更新ClusterIssuer配置
将ClusterIssuer资源中的ACME服务地址替换为正式环境地址:
spec: acme: server: https://acme-v02.api.letsencrypt.org/directory
应用更新后的ClusterIssuer配置。
2. 触发正式证书签发
删除原有测试证书对应的Secret,触发cert-manager重新签发正式证书:
kubectl delete secret tls-secret-31 -n tests
等待1~2分钟后执行以下命令,确认新证书状态为Ready:
kubectl get certificates -n tests
- 加载最新配置
重启nginx-ingress controller Pod确保新证书被正确加载:
# 替换为你的nginx-ingress controller实际部署名和所在命名空间 kubectl rollout restart deployment <nginx-ingress-controller-deployment-name> -n <nginx-ingress-namespace>
- 验证访问
清除浏览器SSL缓存或使用无痕模式访问域名,确认证书报错消失。
注意事项
- 正式环境的Let's Encrypt接口有请求频次限制,建议确认所有配置逻辑正确后再切换,避免触发限流导致证书签发失败。
- 若你之前配置的nginx-ingress全局默认证书
nginx-ingress/dragon-family-com也是staging环境签发,需同步替换为正式证书,避免其他未单独配置TLS的Ingress出现同类报错。
内容的提问来源于stack exchange,提问作者YakovL
相关产品推荐
相关产品推荐

