В течение последних нескольких часов я пытался настроить и запустить обратный прокси-сервер для приложения, к которому теперь необходимо получить общий доступ.
Для проблем безопасности и провайдера, который блокирует порт 80, приложение может быть достигнуто только по https. Я знаю, что это можно сделать с помощью Apache или Squid (среди прочих). Я попробовал оба и потерпел неудачу.
Текущая сеть настроена так:
gateway.mydomain.com является шлюзом. На шлюзе apache уже настроен с ssl vhost по умолчанию, а squid работает как обычный перенаправляющий прокси.
Приложение в локальной сети https://application.mydomain.com настроено и доступно, как и ожидалось, локально.
Это конфигурация, которую я попробовал на squid, в верхней части squid conf я добавил директиву include в /etc/squid/application.conf
:
application.conf:
https_port 443 cert=/etc/pki/tls/certs/localhost.crt key=/etc/pki/tls/private/localhost.key defaultsite=application.mydomain.com vhost
# HTTPS peer
cache_peer https://application.mydomain.com parent 443 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER name=application
cache_mgr root
visible_hostname application.mydomain.com
http_port 443 accel defaultsite=application.mydomain.com
acl all src 0.0.0.0/0.0.0.0
Этот подход терпит неудачу и дает следующую ошибку:
SSL connection error
Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have.
Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
Затем я попытался с Apache, так как я бы предпочел, чтобы шлюз слушал через стандартный https порт 443. Конфигурация squid не будет работать, когда apache прослушивает 443, по умолчанию обслуживается apache vhost.
Вот что я попробовал с apache:
ssl.conf, после vhost по умолчанию
NameVirtualHost application.mydomain.com:443
<VirtualHost application.mydomain.com:443>
ServerName application.mydomain.com
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog /var/log/httpd/application_log combined
LogLevel Debug
SSLProxyEngine On
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
# RewriteEngine on
# RewriteRule ^/$ /index.html [R]
ProxyRequests off
ProxyPass / https://application.mydomain.com
ProxyPassReverse / https://application.mydomain.com
</VirtualHost>
Это был бы мой предпочтительный способ сделать это, все приложения работали бы на порте 443, но с этой настройкой, независимо от того, что я пробовал, vhost по умолчанию всегда обслуживается.
Если у кого-то есть подсказка для squid или apache, я был бы очень признателен.