Конфигурация Traefik SSL - PullRequest
       54

Конфигурация Traefik SSL

0 голосов
/ 19 февраля 2019

Итак, я пытаюсь развернуть мой рой-докер с traefik в кластер цифровых морских капель.Я использую traefik в качестве обратного прокси-сервера и балансировщика нагрузки, поэтому я должен получить SSL-сертификат, используя traefik.Документация кажется достаточно простой, поэтому я не совсем понимаю, что происходит с моей конфигурацией.Я надеялся, что вы, ребята, сможете пролить свет на то, что я делаю неправильно.Я использую подстановочный домен, чтобы большинство моих служб работали в качестве поддоменов моего корневого домена. Вот мой toml:

debug = true
logLevel = "DEBUG"
defaultEntryPoints = ["https","http"]

[entryPoints]
  [entryPoints.http]
    address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"
  [entryPoints.https]
    address = ":443"
    [entryPoints.https.tls]

[retry]

[docker]
  endpoint="unix:///var/run/docker.sock"
  exposedByDefault=true
  watch=true
  swarmmode=true
  domain="mouv.com"

[acme]
  email = "leonardo@mouv.com"
  storage = "acme.json"
  entryPoint = "https"
  acmeLogging = true
  # caServer = "https://acme-v02.api.letsencrypt.org/directory"
  caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
  [acme.dnsChallenge]
    provider = "digitalocean"
    delayBeforeCheck = 0
  [[acme.domains]]
    main = "*.mouv.com"
    sans = ["mouv.com"]

А вот мой docker-stack.yml

version: '3.6'

services:
  traefik:
    image: traefik:latest
    networks:
      - mouv-net
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    command: --api
    environment:
      DO_AUTH_TOKEN: "xxxxxxxxxxxxxxxx"
    deploy:
      placement:
        constraints: [node.role==manager]

  user:
    image: hollarves/users-mouv:latest
    networks:
      - mouv-net
    deploy:
      labels:
      - "traefik.port=8500"
      - "traefik.backend=user"
      - "traefik.docker.network=mouv-stack_mouv-net"
      - "traefik.enable=true"
      - "traefik.protocol=http"
      - "traefik.frontend.entryPoints=https"
      - "traefik.frontend.rule=Host:user.mouv.com"

  balances:
    image: hollarves/balances-mouv:latest
    networks:
      - mouv-net
    deploy:
      labels:
        - "traefik.port=8010"
        - "traefik.backend=balance"
        - "traefik.docker.network=mouv-stack_mouv-net"
        - "traefik.enable=true"
        - "traefik.protocol=http"
        - "traefik.frontend.entryPoints=https"
        - "traefik.frontend.rule=Host:balance.mouv.com"

  # this container is not part of traefik's network.
  firebase:
    image: hollarves/firebase-mouv:latest
    networks:
      - firebase-net

   [ ..... more containers ..... ]

networks:
  mouv-net:
    driver: overlay

    [ .... more networks .... ]

Я также видел эту ошибку в журналах

mueve-stack_traefik.1.ndgfhj96lymx@node-1    | time="2019-02-19T13:15:46Z" level=debug msg="http2: server: error reading preface from client 10.255.0.2:50668: remote error: tls: unknown certificate authority"

И это:

mueve-stack_traefik.1.igy1ilch6wl1@node-1    | time="2019-02-19T13:22:00Z" level=info msg="legolog: [WARN] [mueve.com] acme: error cleaning up: digitalocean: unknown record ID for '_acme-challenge.mueve.com.' "

Когда я пытаюсь перейти к одной из моих служб поддоменов, я получаю

subdomain.mouv.com uses an invalid security certificate. The certificate is not trusted because it is self-signed. The certificate is only valid for 9a11926d7857657613b65578dfebc69f.8066eec25224a58acabd968e285babdf.traefik.default.

В конфигурации моего цифрового океанического домена я просто добавляю запись A, указывающую на IP-адрес моего управляющего узла, и запись CNAME как * .mouv.com

1 Ответ

0 голосов
/ 22 февраля 2019

Сертификаты, предоставленные этапом Let's Encrypt (caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"), не являются действительными сертификатами, это нормально.

https://letsencrypt.org/docs/staging-environment/

Промежуточный сертификат промежуточной среды («Поддельный»)LE Intermediate X1 ») выдается корневым сертификатом, отсутствующим в доверенных хранилищах браузера / клиента.Если вы хотите изменить клиент только для тестирования, чтобы доверять промежуточной среде для целей тестирования, вы можете сделать это, добавив сертификат Fake LE Root X1 в свое хранилище доверенных сертификатов.Важное замечание: Не добавляйте промежуточный корень или промежуточное звено в доверенное хранилище, которое вы используете для обычного просмотра или других операций, поскольку они не проверяются или не соответствуют тем же стандартам, что и наши производственные корни, и поэтому их небезопасно использовать для каких-либо других целей.чем тестирование.

Чтобы иметь действительные сертификаты, вы должны использовать рабочую конечную точку Let's Encrypt (caServer = "https://acme-v02.api.letsencrypt.org/directory")

...