Внутренние и внешние сервисы, работающие за Traefik в режиме Docker Swarm

У меня проблемы с поиском способа сделать мою ситуацию работоспособной. У меня 2 приложения:

1: Веб-приложение внешней службы, работающее на sub1.domain.com. Если я запускаю это приложение за traefik с acme (LetsEncrypt), оно работает нормально. У меня есть еще несколько серверных служб (api / auth), которые работают с действующим сертификатом LetsEncrypt и перенаправляют свой http-трафик на https с помощью traefik.

[entryPoints.http.redirect]
  entryPoint = "https"

У меня должна быть какая-то форма пересылки http на https для этой службы.

2: Внутреннее служебное веб-приложение, работающее на sub2.domain.com. У меня есть самозаверяющий доверенный сертификат (внутренний ЦС), который отлично работает за traefik, если я установил его как сертификат по умолчанию или если я использую его в самом приложении (внутри tomcat). Однако, поскольку это внутренняя служба, я могу жить без ssl, если это решит мою проблему. Однако это не работает с переадресацией traefik с http на https.

Я пытался заставить эти 2 службы работать за одним и тем же экземпляром traefik, но все возможные сценарии, о которых я мог думать, не работают, потому что они либо все еще работают, либо просто не работают.

Сценарии

1: Нет переадресации с http на https, не беспокойтесь о https для внутренней службы и просто используйте http. Затем внутри бэкэнда для перенаправления внешнего веб-сервиса на https.

Проблемы:

  • Невозможно иметь 2 порта traefik, которые тоже пересылают traefik.
  • Используйте ACME вместо сертификата по умолчанию

2. Используйте ACME вместо сертификата по умолчанию

кто-то еще подумал, что это хорошая идея. Просто пока не работает.

3: повторно использовать серверный ssl-сертификат. У traefik просто перенаправление без завершения ssl. Я не уверен, что это то же самое, но есть опция passTLSCert. Однако кажется, что это возможно только с интерфейсами, определенными в файле .toml, которые не работают (вероятно, потому, что я использую докер для бэкэндов).

4: используйте вызов DNS-01 для создания сертификата SSL для моей внутренней службы. Похоже, это может сработать, поэтому теперь я использую CloudFlare и имею ключ api. Однако для поддоменов это не работает. и на мой отчет о проблеме нет ответа: https://github.com/containous/traefik/issues/1953

РЕДАКТИРОВАТЬ: Я мог бы исправить проблему, описанную в 4, чтобы это работало. Кажется, внутренний DNS может конфликтовать с traefik


person p.streef    schedule 05.09.2017    source источник


Ответы (1)


Кто-то решил, что на наших внутренних DNS-зонах будут добавлены для каждого поддомена, что означает, что запрос SOA вернул поддомен в качестве имени. Это не очень хорошо работает с cloudflare, поскольку внутренняя зона DNS отличается от зоны DNS cloudflare.

Изменение этой зоны на основную с записями для поддоменов устранило проблему (в сочетании с опцией delayDontCheckDNS).

person p.streef    schedule 06.09.2017