apache 2.4.6 reverseproxy mod_proxy_wstunnel для безопасного веб-сокета wss:// fails
Я пытаюсь настроить сервер Apache 2.4.6 новейшей версии, поддерживающей прокси websocket.
Я получил небезопасное соединение через веб-сокет, чтобы работать как положено, и HTTPS-прокси также работает [это, чтобы удалить конфигурацию SSL как основную причину] Но мое соединение wss:// не удается. При устранении неполадок с Wireshark я узнал, что на wss:// соединение осуществляется с помощью простого текста.
Вот моя конфигурация apache:
<VirtualHost *:4043>
ServerName cbscclrd.ca.wm.com
LogLevel debug
ErrorLog "/apps/apache/httpd-2.4.6/logs/errorSSL_log"
TransferLog "/apps/apache/httpd-2.4.6/logs/access_log"
SSLCertificateFile "/apps/FXD1D2/SSLKeyStore/sdpssl_cert-dev.cer"
SSLCertificateKeyFile "/apps/FXD1D2/SSLKeyStore/sdp-private-key-no-password.pem"
SSLCACertificateFile "/tmp/Apache-PKG/CAchain.pem"
SSLEngine on
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / wss://cbscclrd.ca.wm.com:443 retry=0 keepalive=On
ProxyPassReverse / wss://cbscclrd.ca.wm.com:443 retry=0
</VirtualHost>
Когда соединение, инициированное к wss://cbscclrd.ca.wm.com:443, имеет открытый текст, следовательно, сервер, прослушивающий "cbscclrd.ca.wm.com:443", отклоняет соединение со следующим сообщением об ошибке: javax net ssl SSLException
Любая помощь будет оценена.
2 ответа
Это ошибка в mod_proxy_wstunnel. Он всегда будет отправлять открытый текст на внутренний сервер независимо от схемы URL (ws:// или wss://).
Об ошибке сообщается здесь: https://issues.apache.org/bugzilla/show_bug.cgi?id=55320
Исправление довольно простое (и представлено в отчете об ошибке). Так что, если вам действительно нужно взаимодействие с wss: //, вы можете применить его самостоятельно и пересобрать модуль.
В Apache-2.4_server.conf
ProxyPass "/ws/" "ws://127.0.0.1:4002/"
ProxyPass "/wss/" "wss://127.0.0.1:4002/"
...
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so