4

我正在为我的 Docker Swarm 的 Let's Encrypt 设置而苦苦挣扎。Traefik 在我的堆栈的撰写文件中以这种方式启动:

    image: traefik:v2.2
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    command:
      - --api
      - --log.level=DEBUG
      - --providers.docker=true
      - --providers.docker.endpoint=unix:///var/run/docker.sock
      - --providers.docker.swarmMode=true
      - --providers.docker.exposedbydefault=false
      - --providers.docker.network=traefik-public
      - --entrypoints.http.address=:80
      - --entrypoints.https.address=:443

      - --certificatesResolvers.certbot=true
      - --certificatesResolvers.certbot.acme.httpChallenge=true
      - --certificatesResolvers.certbot.acme.httpChallenge.entrypoint=http
      - --certificatesResolvers.certbot.acme.email=${EMAIL?Variable EMAIL not set}
      - --certificatesResolvers.certbot.acme.storage=/certs/acme-v2.json
      - --certificatesResolvers.certbot.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory

    ...networks, volumes...

    deploy:
      mode: replicated
      replicas: 1 # to avoid concurrency issues
      ...
      labels:
        - "traefik.docker.network=traefik-public"
        - "traefik.enable=true"
        - "traefik.http.services.traefik.loadbalancer.server.port=8080"
        - "traefik.http.routers.traefik.rule=Host(`traefik.my-domain.com`)"
        - "traefik.http.routers.traefik.entrypoints=http,https"
        - "traefik.http.routers.traefik.tls.certresolver=certbot"
        - "traefik.http.routers.traefik.middlewares=traefik-auth"
        - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:${HASHED_PASSWORD?Variable HASHED_PASSWORD not set}"

我不能得到更多

level=debug msg="No ACME certificate generation required for domains [\"traefik.my-domain.com\"]." providerName=certbot.acme routerName=traefik@docker rule="Host(`traefik.my-domain.com`)"

我想知道为什么在 Firefox 抱怨获得“TRAEFIK DEFAULT CERT”(Chromium 也顺便说一句)时不需要 ACME 证书。

我也试过:

  • 没有让我们加密的登台服务器
  • 我希望通过 DNS 挑战使其与通配符 *.my-domain.com 一起用于开发目的(与 certbot 一起手动工作)。
  • 设置 traefik.my-domain.com DNS 区域(从问题中删除通配符大小写)
  • 使用 TRAEFIK DEFAULT CERT更改了此处建议的使用全局部署的“复制”模式Traefik + Consul not 在复制模式下生成 SSL 证书
  • 我目前正在寻找一种直接在我的服务器上使用 Certbot 处理证书更新的方法......
4

2 回答 2

2

我遇到了同样的问题,它帮助我更改了存储 acme.json 的卷。我认为这是因为 Traefik 看到acme.json不为空,他根本不要求新证书。

所以如果你使用类似的东西:

command:
...
  - --certificatesResolvers.certbot.acme.storage=/certs/acme-v2.json
volumes:
  - "certs:/certs"

尝试使用不同的音量:

command:
...
  - --certificatesResolvers.certbot.acme.storage=/letsencrypt/acme-v2.json
volumes:
  - "letsencrypt:/letsencrypt"
于 2020-09-17T12:19:17.947 回答
1

对我来说,它是设置的默认(自定义)证书,它对整个域都有效,所以 traefik 没有请求特定的 acme/letsencrypt 一个,因为它认为它已经有了一个。

禁用自定义默认证书后,它立即生效。

于 2021-06-21T21:30:49.157 回答