Traefik无法向Let's Encrypt申请TLS证书问题求助
问题分析与解决
错误根源
从日志可以看到,Traefik尝试为bitwarden-docker这个无点域名申请证书,被Let's Encrypt拒绝——合法公网域名必须包含至少一个点。
问题核心是:你的Bitwarden服务标签中,错误给未配置Host规则的bitwarden路由设置了证书解析器,Traefik会自动将服务/容器名称作为该路由的默认Host值,这个名称不符合域名规范,导致证书申请失败。
看你的配置:
# 错误配置:给未定义规则的bitwarden路由绑定了certresolver - "traefik.http.routers.bitwarden.tls.certresolver=myresolver" # 实际使用的HTTPS路由bitwarden-secure,却未关联certresolver
修复步骤
1. 修正路由标签配置
将证书解析器绑定到正确的HTTPS路由(bitwarden-secure),同时移除或补全未配置的bitwarden路由:
修正后的Bitwarden服务标签示例:
labels: - "traefik.enable=true" - "traefik.http.routers.bitwarden-secure.middlewares=compress" - "traefik.http.routers.bitwarden-secure.rule=Host(`bitwarden.example.com`)" - "traefik.http.routers.bitwarden-secure.tls=true" # 将certresolver绑定到正确的HTTPS路由 - "traefik.http.routers.bitwarden-secure.tls.certresolver=myresolver" # 可选:添加HTTP自动跳转HTTPS的路由 - "traefik.http.routers.bitwarden.entrypoints=web" - "traefik.http.routers.bitwarden.rule=Host(`bitwarden.example.com`)" - "traefik.http.routers.bitwarden.middlewares=redirect-to-https" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
2. 重载配置(可选)
如果错误路由配置已被Traefik缓存,重启服务确保配置完全生效:
docker-compose down && docker-compose up -d
3. 批量检查其他服务
对所有出现相同问题的服务执行相同操作:确保每个配置certresolver的路由,都有正确的Host规则(指向带点的合法域名),避免未配置规则的路由触发错误的证书申请。
验证
重启后查看Traefik日志,若不再出现Domain name needs at least one dot错误,说明配置修复成功。新服务证书会自动通过myresolver申请,已有证书到期后也能正常续期。
内容的提问来源于stack exchange,提问作者Tobias Wennberg
相关产品推荐
相关产品推荐

