Настройка Docker с обратным прокси-сервером Traefik - NET: ERR_CERT_AUTHORITY_INVALID в одном домене, несмотря на идентичную настройку и настройку другого домена, который работает - PullRequest
0 голосов
/ 20 марта 2019

У меня есть настройка Docker с Traefik в качестве обратного прокси. У меня есть один контейнер NGINX, обслуживающий статическую страницу. Предполагается, что два домена (example-A.com и example-B.de) будут отображать одну и ту же статическую страницу. Хотя example-A.com работает как положено, example-B.de получает ошибку NET: ERR_CERT_AUTHORITY_INVALID.

example-A.com зарегистрирован в доменах Google. Его A-запись с именем «@» указывает на IP-адрес моего хоста Docker.

example-B.de зарегистрирован у другого регистратора доменов. Его A-запись указывает на IP-адрес моего хоста Docker (т. Е. Тот же IP, что и на example-A.com). Я не могу настроить имя "@" с этим регистратором, я могу только установить запись A и целевой IP.

Мой traefik.toml:

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:xxxxxxxxx"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = "xxxxxxx@gmail.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "my-main-domain.net"
watch = true
network = "traefik"

Мой docker-compose.yml:

version: "3"

services:
  my-web:
    image: nginx:alpine
    container_name: my-web
    volumes:
    - /home/my-directory:/usr/share/nginx/html:ro
    networks:
    - traefik
    labels:
    - traefik.enable=true
    - traefik.frontend.rule=Host:example-B.de,example-A.com
    restart: always
  jupyter:
    [config here... with "traefik.frontend.rule=Host:subdomain1.my-main-domain.net"... remainder of config]
  ghost:
    [config here... with "traefik.frontend.rule=Host:subdomain2.my-main-domain.net"... remainder of config]

networks:
  traefik:
    external: true

Странное поведение заключается в том, что example-A.com работает должным образом (HTTP и HTTPS), а example-B.de завершается ошибкой с NET: ERR_CERT_AUTHORITY_INVALID (HTTPS; HTTP направляется на HTTPS, т.е. та же ошибка), несмотря на точно такую ​​же настройку в docker-compose.yml в том же контейнере на том же хосте Docker (см. traefik.frontend.rule) и работает под тем же traefik.toml.

Другое странное поведение: я получаю ошибку NET: ERR_CERT_AUTHORITY_INVALID на моем мобильном телефоне (Chrome). На моем компьютере (Chrome) отображаются «404 страница не найдена» (из Traefik) и «Не защищено» в строке URL с подробной информацией «TRAEFIK DEFAULT CERT - самозаверяющий корневой сертификат - этот сертификат не был подписан третьей стороной ».

Другие две docker-службы в моем docker-compose.yml (jupyter и ghost) работают как положено.

Я перезапустил traefik и запустил докер и запустил docker-compose.yml.

Единственное отличие, которое я могу заметить, - это другой регистратор домена и разница в записях DNS A, как описано выше.

Кажется, проблема связана с SSL, однако, насколько мне известно (ограничено), регистратор домена не имеет никакого отношения к сертификатам SSL. Кроме того, настройка DNS здесь не является проблемой, так как браузер правильно разрешает домен, но затем отображает ошибку вместо страницы.

Может ли кто-то определить проблему в моих настройках или конфигах и может указать мне исправление или дальнейшее расследование?

1 Ответ

1 голос
/ 20 марта 2019

Как отметил @codinghaus в своем комментарии, решение состоит в добавлении записи CAA в домен у регистратора доменов . Я добавил свойство тега «Issue» со значением «letsencrypt.org». Затем я перезапустил traefik и мой docker-compose.yml.

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