При запросе 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: более разумная конфигурация
Настройте виртуальный хостинг на основе имен (который у вас наверняка уже есть) с выбором сертификатов на основе имен.
- Настройка двух отдельных виртуальных хостов (
<Host>
в conf/server.xml
)
foo.com
bar.com
- Настройка сертификатов на основе виртуального сервера (требуется как минимум Tomcat 8.5)
- Использование
<SSLHostConfig>
в качестве дочернего элемента вашего <Connector>
- Один для каждого из
foo.com
и bar.com