Traefik拒绝使用有效ACME证书,回退至自签名证书问题求助
结合你已经完成的验证,以下是进一步的排查和修复方向:
确认TLS路由与域名的绑定
检查你的Docker路由标签(或静态配置)是否明确指定了TLS域名。比如Docker标签需要包含:traefik.http.routers.[my-router].tls=true traefik.http.routers.[my-router].tls.domains[0].main=your-domain.com traefik.http.routers.[my-router].tls.domains[0].sans=www.your-domain.com确保访问的域名完全匹配这里配置的
main或sans字段,避免因域名不匹配导致Traefik无法找到对应证书。验证TLS Store的默认证书配置
检查Traefik静态配置中默认TLS Store是否正确关联了ACME生成的证书。如果使用文件存储的ACME证书,静态配置应类似:tls: stores: default: defaultCertificate: certFile: /acme/certs/your-domain.com.crt keyFile: /acme/certs/your-domain.com.key若使用ACME resolver自动管理,需确保路由的TLS配置指定了resolver:
traefik.http.routers.[my-router].tls.certresolver=[your-resolver-name]检查证书文件的持久化与权限
虽然你确认Traefik能读取证书,但重启容器后需验证证书文件是否仍存在且权限正确。进入Traefik容器执行:ls -l /path/to/your/acme/certs确保Traefik运行用户(默认UID 10001)对证书文件有读权限,避免因挂载卷的权限变更导致证书无法加载。
开启ACME Trace日志排查加载流程
临时将Traefik日志级别调整为trace,重启后查看ACME相关日志:--log.level=trace重点关注证书生成后是否成功保存,以及Traefik启动时是否有加载证书的报错或警告,这能帮助定位证书加载环节的问题。
排查路由匹配优先级冲突
使用curl http://localhost:8080/api/http/routers列出所有路由,检查是否存在其他路由的规则优先级高于你的目标路由,导致请求被匹配到未配置ACME证书的路由,从而触发默认自签名证书。调整冲突路由的priority字段(默认值为0),确保目标路由优先级更高。
内容的提问来源于stack exchange,提问作者dkd6

