You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法配置Traefik仅为DuckDNS生成Let's Encrypt通配符证书

解决Traefik为DuckDNS生成通配符证书的问题

要生成*.mydomain.duckdns.org通配符证书并让所有子域名复用,需要调整Traefik的静态和动态配置,明确指定通配符域名需求,同时修正DNS挑战的配置错误。

1. 修正静态配置(traefik.yml)

移除DNS resolvers中的多余转义引号(YAML语法不需要转义双引号),确保DNS服务器地址正确解析:

# traefik.yml
entryPoints:
  web:
    address: :80

  websecure:
    address: :443

certificatesResolvers:
  letsencrypt:
    acme:
      email: myemail
      storage: /letsencrypt/acme.json
      dnsChallenge:
        provider: duckdns
        # 先保留这两个参数确保证书生成稳定,后续可尝试移除
        disablePropagationCheck: true
        delayBeforeCheck: 60s
        resolvers:
          - "1.1.1.1:53"
          - "8.8.8.8:53"

api:
  insecure: true

providers:
  file:
    filename: /config/dynamic.yml
    watch: true

log:
  level: DEBUG

2. 修改动态配置(dynamic.yml)

在每个路由的TLS配置中添加domains字段,指定主域名和通配符SAN,让Traefik统一请求通配符证书:

# dynamic.yml
http:
  routers:
    whoami:
      rule: Host(`whoami.mydomain.duckdns.org`)
      service: whoami
      entryPoints:
        - websecure
      tls:
        certResolver: letsencrypt
        domains:
          - main: "mydomain.duckdns.org"
            sans:
              - "*.mydomain.duckdns.org"

    portainer:
      rule: Host(`portainer.mydomain.duckdns.org`)
      service: portainer
      entryPoints:
        - websecure
      tls:
        certResolver: letsencrypt
        domains:
          - main: "mydomain.duckdns.org"
            sans:
              - "*.mydomain.duckdns.org"

  services:
    whoami:
      loadBalancer:
        servers:
          - url: http://whoami:80

    portainer:
      loadBalancer:
        servers:
          - url: http://portainer:9000

3. 清理旧证书并重启服务

  1. 停止Traefik容器:docker stop traefik
  2. 删除旧的ACME存储文件(避免复用单域名证书):rm ./traefik/letsencrypt/acme.json
  3. 重启Traefik:docker-compose up -d traefik

验证方法

  • 查看Traefik日志,确认ACME resolver成功生成*.mydomain.duckdns.org证书
  • 访问两个子域名,检查浏览器证书信息,确认两者使用同一张通配符证书

关键说明

  • tls.domains字段告诉ACME resolver要生成包含通配符的SAN证书,而非单独为每个子域名申请
  • 修正DNS resolvers的转义问题,确保Traefik能正确验证DNS记录传播状态
  • 清理旧证书是为了强制Traefik重新发起通配符证书请求,避免复用历史证书

内容的提问来源于stack exchange,提问作者João Casarin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:08:12