Traefik позаботится о первоначальной аутентификации и обновлении «Let's encrypt»? - PullRequest
0 голосов
/ 23 января 2019

Чтобы получить сертификат SSL для домена веб-сайта от Let's Encrypt, я должен продемонстрировать контроль над доменом.Let's Encrypt CA рассмотрит запрашиваемое доменное имя и выполнит один или несколько наборов задач.

Q1 : Когда у меня есть доменное имя, указывающее на VPS, и адрес электронной почты в «Зашифровать», может ли Traefik автоматически позаботиться о начальном процессе аутентификации?

Q2 : Достаточно ли оставить порт http (80) открытым для шифрования Let's для начальной проверки?

Q3 : Требуется ли для автоматического обновления открытие 80 порта?Или это также может быть порт 443?Гораздо лучше начать перенаправлять весь трафик на https.ТАК - может ли Traefik / LetsEncrypt автоматически обновляться с помощью открытого порта 443?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Q2 и Q3:

Порт, используемый для решения задачи Let's Encrypt (создание или обновление), зависит от того, какую задачу вы используете:

  • Для вызова HTTP вам нужно использовать порт 80
  • Для вызова TLS-ALPN вам нужен порт 443
  • Для вызова DNS порт не требуется, поскольку процесс проверки выполняется на сервере DNS.

Для создания или продления используется один и тот же порт (в зависимости от задачи), поэтому, если вы хотите, чтобы Traefik автоматически обновил ваш сертификат, вам нужно оставить порт открытым.

0 голосов
/ 26 января 2019

Ответы (пока):

Q1: ДА! Электронной почтой может быть любой ваш адрес электронной почты.Имя домена не обязательно должно совпадать с именем вашего домена.Доменное имя должно действительно указывать на VPS.

Q2: ДА! В первый раз оставьте 80-порт открытым.Начните перенаправление после установки сертификата.

Q3: ДА! : Я не смог найти ответ, поэтому сразу попробовал предложения, приведенные в первом ответе.Я перезапустил примерно 3 раза из-за изменения других настроек, и в журнале Traefik не было ошибок.

Теперь давайте перейдем к реальному коду.В коде вы можете найти 3 ответа.Следующий файл - это файл traefik.toml:

logLevel = "ERROR"
defaultEntryPoints = ["http", "https"]

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

[docker]
  domain = "xyz.com"

[api]

[acme]
  # Q1 - just use your email address
  email = "email@example.com"
  storage = "acme.json"
  onHostRule = true
  entryPoint = "https"
  # Q3 answer = this allows for the TLS challenge on port 443
  [acme.tlsChallenge]
  # Q2 answer = this provides the HTTP challenge on port 80
  #[acme.httpChallenge]
  #  entryPoint = "http"

Файл создания docker:

version: '3'
services:
  traefik:
    image: traefik:v1.7
    container_name: traefik
    restart: always
    networks:
      - yourappnet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /your_path/traefik/traefik.toml:/traefik.toml
      - /your_path/traefik/acme.json:/acme.json
    ports:
      - "80:80"
      - "443:443"
    labels:
      - "traefik.docker.network=yourappnet"
      - "traefik.frontend.rule=Host:monitor.xyz.com"
      - "traefik.port=8080"

  yourapp:
    image: dockerhubuser/dockerimagename:latest
    ports:
      - 8080
    networks:
      - yourappnet
    labels:
      - "traefik.docker.network=yourappnet"
      - "traefik.frontend.rule=Host:xyz.com"

networks:
  yourappnet:
    driver: bridge
...