我正在尝试将apache server 2.4.6配置为支持websocket代理的最新版本。
我得到非安全的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
非常感谢任何帮助。
答案 0 :(得分:3)
这是mod_proxy_wstunnel中的错误。无论url方案如何(ws://或wss://),它总是会向后端服务器发送明文。
此处报告错误: https://issues.apache.org/bugzilla/show_bug.cgi?id=55320
错误修复相当简单(并在错误报告中提供)。因此,如果你真的需要wss://后端通信,你可能想要自己应用它。重建模块。
答案 1 :(得分:2)
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