Проблема с получением сертификата от давайте зашифровать используя Traefik с докером - PullRequest
0 голосов
/ 29 мая 2019

Я настроил Traefik с Docker и сервисом, стоящим за ним. Базовая настройка работает. Я могу перейти к порту 80, используя доменное имя, которое я перенаправил на https, а затем увидеть «недействительный сертификат» - так как часть «давайте шифровать» нарушена.

[маршрутизатор] <-: 80 /: 443-> [linux / docker [Traefik: 80 /: 443] [Служба: 8080]]

Вот запись в журнале (отредактированный домен.)

Журналы

acme: Ошибка -> У одного или нескольких доменов возникла проблема: \ n [xyz.example.net] acme: ошибка: 400 :: urn: ietf: параметры: acme: ошибка: соединение :: Извлечение http://xyz.example.net/.well-known/acme-challenge/eIAFZqaGMHMWaBjINjzk4m8PuWiYfuCHCTnSU9M: Ошибка при получении данных проверки, URL: \ n "

Сообщение об ошибке является точным, я не могу перейти к этому URL. Я заметил, что могу перейти по этому URL-адресу, используя внутренний IP http://10.0.0.21/.well-known/acme-challenge/key, и Traefik отвечает этим в журнале:

traefik | время = "2019-05-28T21: 20: 52Z" уровень = ошибка msg = "Ошибка при получении запроса на повторную попытку токена в 542,914495 мс"

Я подозреваю, что проблема в настройке перенаправления имени домена. Мой сервис находится на xyz.example.net (как и Traefik.) Я подозреваю, что проблема в том, что Traefik перенаправляет весь трафик, поступающий на xyz.example.net:80/:443, в сервис, а не обрабатывает сам ./well-known/acme-challenge. Нужно ли давать имя самому шлюзу? (Например, zzz.example.net - это Traefik, а xyz.example.net - услуга?)

Как я могу это исправить?

Мой файл TOML:

debug = false

logLevel = "ERROR" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
InsecureSkipVerify = true
defaultEntryPoints = ["https", "http"]

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

[retry]

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "example.net"
watch = true
exposedbydefault = false

[acme]
email = "me@example.net"
storage = "acme.json"
entryPoint = "https"
onDemand = false 

onHostRule = true
[acme.httpChallenge]
entryPoint = "http"

1 Ответ

0 голосов
/ 29 мая 2019

Я заметил, что хотя внутренний IP 192.xxx работал - внешний IP не работал.Конечно, я бы сказал, что это похоже на проблему с брандмауэром - НО - брандмауэр отлично пропускает трафик для служб, которые я тестировал, поэтому я был сбит с толку.

Решение? порт 80 не пересылался на брандмауэре , 443 было.Поэтому, когда я попытался протестировать с помощью curl / browser, я набрал https://xyz.example.com - и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...