12

我正在尝试将 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

任何帮助将不胜感激。

4

2 回答 2

3

这是 mod_proxy_wstunnel 中的一个错误。无论 url 方案(ws:// 或 wss://)如何,它都会将纯文本发送到后端服务器。

该错误报告在这里: https ://issues.apache.org/bugzilla/show_bug.cgi?id=55320

错误修复相当简单(并在错误报告中提供)。所以如果你真的需要 wss:// 后端通信,你可能想自己应用它并重建模块。

于 2013-10-24T12:00:32.343 回答
2

在 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
于 2017-05-22T12:34:25.177 回答