Traefik配置示例:混合使用Let's Encrypt与已购证书
我来帮你搞定这个配置——Traefik完全支持混合使用手动购买的证书和Let's Encrypt自动签发的证书,核心是通过**证书解析器(certResolver)**来区分不同主机的证书来源。下面是具体的配置方案和示例:
核心配置思路
Traefik允许你同时配置两种证书来源:
- 全局手动证书:在
entryPoints.https.tls下配置,作为默认选项,供没有指定证书解析器的主机使用 - ACME自动证书:通过
[certificatesResolvers]段配置证书解析器,然后在特定前端/路由规则里指定使用这个解析器,让对应主机自动申请Let's Encrypt证书
修改后的traefik.toml示例
defaultEntryPoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ":80" # 可选:把HTTP请求重定向到HTTPS,ACME的http-01挑战会自动被Traefik拦截处理,不会影响 [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] # 这里放你已购买的证书,作为默认证书(给不需要Let's Encrypt的主机用) [[entryPoints.https.tls.certificates]] certFile = "/etc/traefik/certs/your-purchased-cert.crt" keyFile = "/etc/traefik/certs/your-purchased-key.key" # 配置ACME(Let's Encrypt)证书解析器 [certificatesResolvers.myacme.acme] # 存储ACME账户和证书的文件路径 storage = "/etc/traefik/acme.json" # 使用http-01挑战(需要80端口对外开放) [certificatesResolvers.myacme.acme.httpChallenge] entryPoint = "http" # 可选:如果用tls-alpn-01挑战,替换成下面的配置 # [certificatesResolvers.myacme.acme.tlsAlpnChallenge] # 配置Let's Encrypt的邮箱,用于证书过期提醒 email = "your-email@example.com" # 测试环境用staging,避免触发Let's Encrypt的速率限制 # caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
为特定主机启用Let's Encrypt
接下来,你需要在需要自动证书的前端/路由规则里指定使用myacme这个证书解析器,不同配置方式的示例如下:
1. 文件配置的前端(静态配置)
如果是用Traefik的文件配置前端,在对应的[frontends]块里添加TLS配置:
[backends] [backends.mybackend] [backends.mybackend.servers.server1] url = "http://localhost:8080" [frontends] [frontends.myfrontend] backend = "mybackend" [frontends.myfrontend.routes.test_1] rule = "Host:my-le-host.example.com" # 指定使用ACME证书解析器 [frontends.myfrontend.tls] certResolver = "myacme"
2. Docker标签配置(动态配置)
如果是用Docker部署服务,给需要Let's Encrypt的容器添加以下标签:
# 基础路由标签 traefik.http.routers.myrouter.rule=Host(`my-le-host.example.com`) traefik.http.routers.myrouter.entrypoints=https # 指定使用ACME证书解析器 traefik.http.routers.myrouter.tls.certresolver=myacme
关键注意事项
acme.json文件需要设置正确的权限:chmod 600 /etc/traefik/acme.json,否则Traefik无法写入- 如果生产环境使用,记得注释掉
caServer的测试地址,改用默认的生产环境地址 - 已购买证书的主机不需要添加
certResolver配置,Traefik会自动使用entryPoints.https.tls里的默认证书
内容的提问来源于stack exchange,提问作者Jim Frenette
相关产品推荐
相关产品推荐

