Traefik: "Для доменов не требуется создание сертификата ACME" в журналах при использовании сертификата по умолчанию

Я борюсь с настройкой Let's Encrypt для моего Docker Swarm. 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`)"

Интересно, почему не требуется сертификат ACME, в то время как Firefox жалуется на получение "TRAEFIK DEFAULT CERT" (Chromium также, кстати).

Я также пробовал:

  • Без промежуточного сервера давайте зашифруем
  • С проблемой DNS, поскольку я надеюсь заставить его работать с подстановочным знаком *.my-domain.com для целей разработки (который работает вручную с certbot).
  • Настройка DNS-зоны traefik.my-domain.com (чтобы убрать подстановочный регистр из проблемы)
  • Изменен режим "репликации" развертывания с глобальным, как предлагается здесь. Traefik + Consul не генерирует сертификаты SSL в реплицированном режиме с использованием TRAEFIK DEFAULT CERT.
  • В настоящее время я ищу способ обрабатывать обновление сертификатов с помощью Certbot прямо на моих серверах...

2 ответа

Для меня это был установленный по умолчанию (настраиваемый) Cert, который действовал для всего домена, поэтому traefik не запрашивал конкретный acme / letsencrypt, потому что он уже есть.

После отключения настраиваемого сертификата по умолчанию он сработал мгновенно.

Извините, кстати. для отдельного ответа, я не могу писать небольшие комментарии с моей низкой репутацией.

У меня была такая же проблема, и это помогло мне изменить объем, в котором хранится 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"
Другие вопросы по тегам