如何用Traefik与Let's Encrypt配置通配符证书?修改示例配置要点
嘿,我来一步步告诉你怎么调整这个配置,让它能顺利拿到通配符证书:
调整域名声明:
通配符证书的核心是要明确指定*.domain.com这个域名范围。你可以修改[[acme.domains]]块,把根域名和通配符域名都包含进去,这样既覆盖domain.com本身,又能适配所有子域名(比如www.domain.com、sub.domain.com这类)。修改后的代码块如下:[[acme.domains]] main = "domain.com" sans = ["*.domain.com"]如果你只需要覆盖子域名,也可以把
main直接设为*.domain.com,不过通常建议同时包含根域名会更实用。补充Cloudflare认证信息:
因为你用Cloudflare作为DNS挑战的服务商,Traefik需要权限修改你的DNS记录来完成Let's Encrypt的验证。你需要在[acme.dnsChallenge]块里添加Cloudflare的凭证,或者通过环境变量传递(更安全)。如果直接写在配置文件里,要补充:[acme.dnsChallenge] provider = "cloudflare" cloudflareEmail = "你的Cloudflare注册邮箱" cloudflareAPIKey = "你的Cloudflare全局API密钥(更推荐用权限更细的API Token)"小贴士:API Token只需配置DNS编辑权限,比全局密钥更安全,优先推荐使用。
确认存储路径权限:
要保证storage字段里的C:/etc/ssl/lets-encrypt.json路径是Traefik有权限读写的,证书和账户信息都会存在这里,权限不足会导致证书无法保存或续期。可选:先用测试环境验证:
如果你担心频繁请求正式环境触发Let's Encrypt的限制,可以在[acme]块里添加caServer = "https://acme-staging-v02.api.letsencrypt.org/directory",用测试环境验证配置没问题后,再去掉这行切换回正式环境。
这样调整后,Traefik就能通过DNS挑战自动获取并续期覆盖根域名和所有子域名的通配符证书啦~
内容的提问来源于stack exchange,提问作者Jonas Lewin

