ProxyPass HTTPS на другой сервер
У меня есть сервер frontend.example.com
с публичным IP. Это Apache (2.4) должен прокси трафик для service1.example.com
(Псевдоним DNS для frontend.example.com
).
service1.example.com
виртуальная машина в частной локальной сети (192.168.56.0
) между двумя.
Теперь это легко для HTTP:
<VirtualHost *:80>
ServerName service1.example.com
ProxyPass / http://192.168.56.2/
ProxyPassReverse / http://192.168.56.2/
<Location "/">
Require all granted
</Location>
</VirtualHost>
Я пытаюсь сделать то же самое для HTTPS:
<VirtualHost *:443>
ServerName service1.example.com
SSLEngine On
SSLProxyEngine On
ProxyRequests Off
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off
SSLInsecureRenegotiation on
SSLProxyVerify none
SSLVerifyClient none
SSLCertificateFile /etc/ssl/certs/example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/example_com.key
ProxyPass / https://192.168.56.2/
ProxyPassReverse / https://192.168.56.2/
<Location "/">
Require all granted
</Location>
</VirtualHost>
Пытаясь получить доступ service1.example.com
через HTTPS возвращает: ошибка во время SSL рукопожатия с удаленным сервером
Безопасность не моя проблема здесь. service1
требует подключения HTTPS к некоторым своим службам, поэтому я не просто передаю HTTPS в HTTP. я не хочу frontend.example.com
быть связанным с SSL. Я хотел бы, чтобы в нем говорилось: "Эй, у меня есть соединение на 443, я не имею с ним дело, я просто пересылаю его на этот внутренний IP, который позаботится об этом". Я просто хочу передать запрос. Это может быть сделано?
Как вы можете видеть в конфигурации HTTPS выше, я попытался максимально ослабить безопасность (например, SSLInsecureRenegotiation on
Предполагается ли опускать стены против атаки "человек посередине", не так ли?) Но пока ничего не получалось.
1 ответ
Видимо единственная директива, которую я пропустил, SSLProxyCheckPeerName off
, Теперь это работает.