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, Теперь это работает.