Два URL-адреса, указывающие на один и тот же экземпляр Tomcat, перенаправляют один на другой - PullRequest
0 голосов
/ 03 мая 2018

Мои настройки такие (как ни печально).

Два домена указывают на один и тот же сервер:
app.foo.com
app.bar.com

На этом сервере работают два экземпляра Tomcat, один на порту 80, другой на порту 443.

Проблема связана с защищенным приложением на порту 443. У меня установлен сертификат SSL для app.foo.com, поэтому он работает просто отлично. Проблема в том, что когда я перехожу на https://app.bar.com, я получаю большие «небезопасные» предупреждения из браузера (как и ожидалось). Есть ли способ в файлах конфигурации Tomcat иметь трафик на https://app.bar.com перенаправить на https://app.foo.com?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

При запросе https://app.bar.com, ни один клиент никогда не подключится к порту 80 ... он всегда будет связываться с портом 443. Это означает, что если foo.com размещен на порту 443, вы всегда получите (a ) Сертификат foo.com и (b) предположительно, приложение foo.com при использовании HTTPS.

Есть ли особая причина использовать разные порты для этих двух приложений? Почему бы не иметь:

Это тривиально настроить так, чтобы вышеупомянутые URL работали, но также и они:

Если вы хотите, чтобы foo.com всегда и только приложение служили foo и bar.com всегда служили приложение bar (оба в контексте ROOT aka /), тогда вам нужно будет выбрать одна из следующих стратегий:

Стратегия 1: более умные сертификаты

Получите сертификат, в котором в качестве сертификата указаны www.foo.com и www.bar.com SAN .

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

Стратегия 2: более разумная конфигурация

Настройте виртуальный хостинг на основе имен (который у вас наверняка уже есть) с выбором сертификатов на основе имен.

  1. Настройка двух отдельных виртуальных хостов (<Host> в conf/server.xml)
    1. foo.com
    2. bar.com
  2. Настройка сертификатов на основе виртуального сервера (требуется как минимум Tomcat 8.5)
    1. Использование <SSLHostConfig> в качестве дочернего элемента вашего <Connector>
    2. Один для каждого из foo.com и bar.com
0 голосов
/ 03 мая 2018

Я предполагаю, что вы знаете, как перенаправить на другой хост при чтении кота, например Host-Header и отправка ответа 301 или 302, указывающего на другой URL. Но я думаю, что реальный вопрос заключается в том, если это возможно, БЕЗ показа недействительного SSL. Предупреждение: Это невозможно, потому что первоначальный запрос к https://app.bar.com попадет на ваш сервер, только если пользователь вручную примет недействительный сертификат .

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