You need to enable JavaScript to run this app. Traefik返回默认自签名证书而非Let's Encrypt证书问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Traefik返回默认自签名证书而非Let's Encrypt证书问题咨询

问题触发原因
  • 路由名称拼写错误:服务标签中指定certresolver的路由名称写为gites,但实际Gitea路由名称是gitea,配置不匹配导致证书解析器没有绑定到对应路由,Traefik自动 fallback 到默认自签名证书。
  • 域名配置绑定错误:泛域名配置绑定到了名为registry的路由上,没有和gitea路由关联,无法为gitea.example.com申请对应证书。
  • acme.json存储配置错误:Traefik静态配置中acme的存储路径为相对路径acme.json,你没有在docker-compose中挂载对应宿主机文件到容器内,证书申请成功后也无法持久化存储,容器重启就会丢失,权限不符合要求还会直接申请失败。
  • 路由TLS配置缺失:当前Traefik dashboard的路由也没有开启TLS和绑定证书解析器,访问dashboard同样会返回自签名证书。
解决方案
  1. 修正Gitea服务标签配置,替换原有标签为以下内容:
- "traefik.http.routers.gitea.rule=Host(`gitea.example.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls=true"
# 把证书解析器绑定到正确的gitea路由
- "traefik.http.routers.gitea.tls.certresolver=resolver"
# 泛域名配置绑定到gitea路由,若仅需单域名证书可删除以下两行
- "traefik.http.routers.gitea.tls.domains[0].main=example.com"
- "traefik.http.routers.gitea.tls.domains[0].sans=*.example.com"
- "traefik.http.services.gitea-svc.loadbalancer.server.port=3000"
  1. 新增acme.json持久化配置
    首先在宿主机提前创建acme.json文件并设置正确权限:
touch /etc/data/acme.json
chmod 600 /etc/data/acme.json

修改docker-compose.yml中Traefik的volumes配置段,新增挂载规则:

volumes:
  - /etc/localtime:/etc/localtime:ro
  - /etc/data/traefik.yml:/etc/traefik/traefik.yml
  # 新增acme.json挂载
  - /etc/data/acme.json:/acme.json
  - /var/run/docker.sock:/var/run/docker.sock
  1. (可选)配置80端口自动跳转443,避免HTTP访问异常,在traefik.yml中修改entryPoints配置:
entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"
  1. 重新部署Traefik和Gitea服务,部署完成后等待1-2分钟让Traefik完成证书申请,再访问测试即可。如果仍有异常,可以查看Traefik的info级别日志排查证书申请环节的问题,确认域名解析正常、服务公网可达。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:03:00