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

Cert-manager结合Cilium Gateway申请Let's Encrypt证书报404错误求助

排查Cert-Manager + Cilium Gateway HTTP-01挑战404问题

针对你遇到的Let's Encrypt HTTP-01挑战返回404的问题,结合你的配置,以下是几个核心排查方向:

1. ClusterIssuer未指定正确的Gateway监听器

你的ClusterIssuer中HTTP-01求解器的gatewayHTTPRoute.parentRefs仅指定了Gateway名称,但未明确关联到80端口的HTTP监听器(sectionName)。Cilium Gateway可能无法正确识别要将挑战路由绑定到哪个监听器,导致请求无法转发到挑战Pod。

修复方法:在ClusterIssuer的parentRefs中添加sectionName: "http":

solvers:
  - http01:
      gatewayHTTPRoute:
        parentRefs:
          - name: gateway
            namespace: default
            kind: Gateway
            sectionName: "http"  # 新增这一行,指定80端口的监听器

2. 集群外部80端口未正确暴露

Let's Encrypt的挑战服务器需要从公网访问你的域名的80端口,检查以下几点:

  • 确认Cilium Gateway的HTTP监听器(80端口)已获取到有效的公网IP(通过kubectl get gateway gateway -n default查看ADDRESS字段)
  • 验证域名www.mypage.com已正确解析到该公网IP
  • 检查集群防火墙/云服务商安全组是否放行80端口的入站流量

3. 临时挑战路由的有效性验证

Cert-Manager会在cert-manager命名空间下创建临时的HTTPRoute和Pod用于挑战,你可以手动验证这些资源是否正常:

  1. 查看当前的挑战资源:kubectl get challenges -A
  2. 找到对应挑战的临时HTTPRoute:kubectl get httproutes -n cert-manager,检查其parentRefs是否正确指向你的Gateway的HTTP监听器
  3. 在集群内部测试访问挑战路径:
    # 替换成实际的token和域名
    curl http://www.mypage.com/.well-known/acme-challenge/<your-challenge-token>
    
    如果返回404,说明临时路由未生效,需检查Cilium是否正确同步了该HTTPRoute。

4. 版本兼容性问题

确保你的组件版本满足最低兼容要求:

  • Cert-Manager版本 ≥ v1.8(支持Gateway API的HTTP-01求解器)
  • Cilium版本 ≥ v1.12(稳定支持Gateway API v1)
    如果版本过低,升级到兼容版本后重试。

5. 路由规则冲突

检查是否有其他HTTPRoute绑定到了Gateway的80端口,比如存在强制将80端口请求重定向到443的规则。这类重定向会导致Let's Encrypt的挑战请求返回3xx状态码,被Cert-Manager判定为失败。你可以通过kubectl get httproutes -A查看所有路由,确认没有干扰挑战的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:48:25