
Моя ситуация:
У меня есть три сервера Ubuntu, один маршрутизатор NAT и три доменных имени и три веб-сайта Apache. Два домена Ipadress являются WAN ip для маршрутизатора NAT. Весь https-трафик из интернета перенаправляется на сервер один. У каждого сервера есть свой сертификат для своего веб-сайта.
Кто-нибудь, попробуйте подключиться:
Если запрошенное имя хоста является именем хоста для веб-сайта 1. Сервер 1 показывает веб-сайт 1. Если запрошенное имя хоста является именем хоста для веб-сайта 2 или 3. Сервер 1 перенаправляет соединение на сервер 2 или 3. Сервер 2 или 3 показывает веб-сайт 2 или 3.
Помните, что на сервере 1 нет ключей для серверов 2 и 3.
У меня два вопроса.
- Возможно ли это без ошибок типа «человек посередине»?
- Как отредактировать конфигурацию Apache, чтобы это работало.
Исследовать:
Я искал в Google howto forward https requests to other https hosts. Большинство ответов таковы, что у сервера 1 есть все открытые сертификаты и ключи. и что вам нужно создать другой сертификат и ключ для сервера 2 или 3. (В моем случае самоподписанный сертификат). Но я не хочу, чтобы у сервера 1 был закрытый ключ для сервера 2 или 3. Поскольку открытый IP для сервера 1, 2 или 3 одинаков, возможно, что у сервера 1 нет закрытых ключей.
Я также нашел, как можно иметь несколько https виртуальных хостов на одном сервере с разными сертификатами. Нет, потому что у каждого сервера свой собственный веб-сайт.
Кто-нибудь может мне помочь?
решение1
Этого можно добиться с помощью ApacheОбратный прокси-серверfeature. В конфигурации Apache сервера 1 вы создаете VirtualHost
определения, используя конфигурации имени хоста и SSL для сайтов на серверах 2 и 3, которые ProxyPass
используются для проксирования соединений обратно на эти серверы через сервер 1.
Альтернативным методом было бы запустить что-то вроде NGINX перед всеми тремя серверами, направить ваш HTTP/HTTPS-трафик с помощью NAT на NGINX и настроить его для выполнения SSL-терминации иобратный проксидля всех трех серверов.