cert-manager证书订单失败:400 rejectedIdentifier错误求助
排查cert-manager ACME证书签发失败(rejectedIdentifier)问题
错误含义解析
urn:ietf:params:acme:error:rejectedIdentifier 表示ACME CA(如Let's Encrypt)拒绝了你的域名标识符,核心原因通常是域名不符合ACME规范,或CA无法验证域名归属的基础条件。以下是分步排查方案:
1. 验证域名合法性
- 确认Grafana使用的是可公共解析的有效域名,ACME CA不为
.local/.internal等私有后缀域名签发证书。 - 在集群外执行
nslookup <grafana-domain>或dig <grafana-domain>,确保域名存在正确的A/AAAA记录,指向集群Ingress Controller的公网IP。 - 排查域名是否被ACME CA列入黑名单,或存在DNS污染问题。
2. 核对ClusterIssuer配置
- 检查ACME服务器地址:生产环境应为
https://acme-v02.api.letsencrypt.org/directory,测试环境用https://acme-staging-v02.api.letsencrypt.org/directory,避免混淆。 - 验证
solvers配置:- 若用HTTP-01挑战:确保Ingress Controller的80端口可被公网访问,无防火墙/安全组拦截。
- 若用DNS-01挑战:确认DNS服务商API密钥权限足够,能添加TXT记录。
- 检查ClusterIssuer状态:执行
kubectl get clusterissuers,确保状态为Ready;若异常,查看日志:kubectl logs -n cert-manager -l app=cert-manager。
3. 检查Ingress资源配置
- 确认
spec.tls[].hosts域名无拼写错误,与ClusterIssuer适用范围匹配。 - 验证Ingress是否添加正确注解:
annotations: cert-manager.io/cluster-issuer: "<your-clusterissuer-name>" - 确保
spec.rules中的host与TLS hosts一致,且Ingress Controller能正确路由到Grafana服务。 - 查看Ingress事件:
kubectl describe ingress <grafana-ingress-name>,排查cert-manager相关错误提示。
4. 分析证书与订单资源
- 查看证书状态:
kubectl get certificates,若为Failed,执行kubectl describe certificate <cert-name>获取详情。 - 定位异常订单:
kubectl get orders,找到errored状态的订单,执行kubectl describe order <order-name>查看具体失败原因。 - 检查挑战资源:
kubectl get challenges,若无结果,说明订单在创建挑战前已失败,大概率是域名验证前置条件不满足。
5. 提取cert-manager日志排查
过滤目标域名相关日志:
kubectl logs -n cert-manager -l app=cert-manager --tail=100 | grep "<grafana-domain>"
重点关注DNS解析失败、挑战路径不可访问等细节错误。
常见坑点
- k3s自带Traefik Ingress Controller需确保80/443端口已暴露到公网,安全组允许对应端口入站流量。
- 新注册域名需等待DNS记录全球同步(10-30分钟)后再申请证书。
内容的提问来源于stack exchange,提问作者Scorch
相关产品推荐
相关产品推荐

