2015-06-30 8 views
5

का उपयोग कर सुरक्षित websockets को कॉन्फ़िगर करें मैं httpd प्रॉक्सी और रिवर्स प्रॉक्सी का उपयोग कर websockets को कॉन्फ़िगर करने का प्रयास कर रहा हूं लेकिन यह काम नहीं कर रहा है। अगर मैं सीधे टॉमकैट सर्वर का उपयोग करता हूं तो सब कुछ ठीक है, अगर मैं इसे apache httpd के माध्यम से कॉल करता हूं, तो प्रतिक्रिया स्थिति है। इसका मतलब है कि apache httpd websocket अनुरोध की व्याख्या नहीं कर सकता है और प्रोटोकॉल स्विच कर सकता है, है ना?अपाचे httpd 2.4.6 और टॉमकैट 8

यह मेरी अनुप्रयोग के लिए मेरी httpd config है:

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 

Listen 443 https 


SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog 

SSLSessionCache   shmcb:/run/httpd/sslcache(512000) 
SSLSessionCacheTimeout 300 

SSLRandomSeed startup file:/dev/urandom 256 
SSLRandomSeed connect builtin 

SSLCryptoDevice builtin 


<VirtualHost 10.224.130.50:80> 

    ServerName myhost 
    Redirect permanent/https://myhost/ 

</VirtualHost> 

<VirtualHost 10.224.130.50:443> 

    ServerName myhost 
    ErrorLog logs/myhost.error.log 
    CustomLog logs/myhost.access.log common 

    ProxyPass /ws/  wss://localhost:8443/ws/ retry=0 
    ProxyPassReverse /ws/ wss://localhost:8443/ws/ retry=0 

    ProxyPass/https://myhost:8443/ connectiontimeout=600 timeout=1200 
    ProxyPassReverse/https://myhost:8443/ 


    SSLEngine on 
    SSLProtocol all -SSLv2 -SSLv3 
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 
    SSLProxyEngine on 
     SSLProxyVerify none 
     SSLProxyCheckPeerCN off 
     SSLProxyCheckPeerName off 
     SSLProxyCheckPeerExpire off 
    SSLCertificateFile "/etc/pki/tls/certs/myhost.cer" 
    SSLCertificateKeyFile "/etc/pki/tls/private/myhost.key" 

</VirtualHost> 

और यह अपाचे बिलाव के लिए कनेक्टर config है:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
       maxThreads="150" scheme="https" secure="true" 
       clientAuth="false" sslProtocol="TLS" 
      keystoreFile="/root/.keystore" 
      keystorePass="password" /> 

उत्तर

3

मुझे लगता है कि समस्या स्लैश हो सकता है:

नोट: स्लेश पर सख्ती से ध्यान दें "/" या इसकी कमी! WebSocket यूआरएल endpoint

ProxyPass/ws/WSS: // स्थानीय होस्ट: 8443/ws

ProxyPassReverse/ws/WSS: // स्थानीय होस्ट: 8443/ws

अधिक यहाँ जानकारी: tunneling-secure-websocket-connections-with-apache

+0

क्षमा करें, मैं साथ और स्लैश के बिना कोशिश की ... अभी भी ... मैं डॉक्स का पालन करने की कोशिश की लेकिन कुछ भी बाहर आता है ..:

यहाँ एक प्रॉक्सी फ़ाइल के रूप में पूरे समाधान है समस्या यह है क्योंकि कभी-कभी मुझे त्रुटि 200 मिलती है, इसका मतलब है कि httpd रीडायरेक्ट करता है लेकिन उचित तरीके से नहीं, है ना? – spauny

+0

क्या आप मुझे अनुरोध और प्रतिक्रिया शीर्षलेख दोनों दिखा सकते हैं? –

1

यह मेरे लिए काम करता था, लेकिन मुझे अपने आंतरिक एप्लिकेशन पर जावा स्प्रिंग फ्रेमवर्क की वजह से एक अतिरिक्त लाइन की आवश्यकता थी। काम नहीं करता है

<Location /outside-app> 
    # WEBSOCKET 
    Header always add "Access-Control-Allow-Origin" "*" 
    ProxyPass wss://internal.company.com:11111/application 

    RewriteEngine on 
    Require all granted 
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] 
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] 
    RewriteRule .* https://internal.company.com:11111/application/$1 [P,L] 

    # REVERSE PROXY 
    ProxyPass https://internal.company.com:11111/application 
    ProxyPassReverse https://internal.company.com:11111/application 
</Location> 
संबंधित मुद्दे