2012-07-18 14 views
6

पर काम नहीं करता है मेरे पास एक वेबसाइकिल गैर सुरक्षित एप्लिकेशन है। लेकिन मेरी वेबसाइट https का उपयोग करती है और मुझे यह सुनिश्चित करने के लिए फ़ायरफ़ॉक्स से बचने के लिए एक सुरक्षित वेबसॉकेट कनेक्शन की आवश्यकता है कि कनेक्शन असुरक्षित है।सुरक्षित वेबसॉकेट (wss: //) फ़ायरफ़ॉक्स

मैं अपने वेबसॉकेट सर्वर के लिए पीएचपी 5.2.9 के साथ php-websocket-server का उपयोग कर रहा हूं, इसलिए जब मैं वेबसॉकेट सुरक्षित का उपयोग करता हूं तो मैं openssl_decrypt फ़ंक्शन के साथ पैकेट को डिक्रिप्ट नहीं कर सकता।

:

इसलिए मैं आदेश WSS का उपयोग कर, कि मैं 54321 बंदरगाह के लिए 12345 बंदरगाह एक सर्वर WebSocket करने के लिए ग्राहक WebSocket आबद्ध करने के लिए ग्राहक द्वारा भेजे गए पैकेट डिक्रिप्ट करने के लिए में stunnel इस्तेमाल किया है, तो मैं सर्वर मोड में एक stunnel जोड़ा

[wsServer] 
accept = 12345 
connect = 192.168.1.227:54321 

इस कॉन्फ़िगरेशन के साथ मेरा एप्लिकेशन https + wss के माध्यम से क्रोम पर ठीक काम करता है। लेकिन फ़ायरफ़ॉक्स पर हैंडशेक के दौरान कोई समस्या है, ऐसा लगता है कि Sec-WebSocket-Version और Sec-WebSocket-Key शीर्षलेख में अनुपलब्ध हैं। मुझे समझ में नहीं आता क्योंकि यह फ़ायरफ़ॉक्स पर http + ws के माध्यम से काम करता है।

आपकी मदद के लिए अग्रिम धन्यवाद।

संपादित करें: मैंने पोर्ट 12345 पर प्रमाण पत्र के लिए अपवाद जोड़ा है, अब हैंडशेक अच्छी तरह से चल रहा है क्योंकि मुझे लगता है कि फ़ायरफ़ॉक्स में अब Sec-WebSocket-Key है।

यहाँ

फ़ायरफ़ॉक्स (क्रोम अनुरोध से भी बड़ा) के साथ काम हैडर का अनुरोध:

GET/HTTP/1.1 
Host: 192.168.1.227:12345 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8 
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding: gzip, deflate 
DNT: 1 
Connection: keep-alive, Upgrade 
Sec-WebSocket-Version: 13 
Origin: https://192.168.1.227 
Sec-WebSocket-Protocol: HyBi-00 
Sec-WebSocket-Key: 65nHN33M6drIPjQHcGK8pA== 
Pragma: no-cache 
Cache-Control: no-cache 
Upgrade: websocket 
+0

यदि आप काम करने वाले और गैर-कामकाजी मामले के लिए दोनों दिशाओं में वास्तविक शीर्षलेख/हैंडशेक दिखा सकते हैं तो शायद मैं जल्दी से पहचान कर सकता हूं कि समस्या क्या है। – kanaka

उत्तर

8

आप ऑटो-हस्ताक्षरित प्रमाणपत्र के साथ स्थानीय में काम करते हैं, तो आप दोनों सर्वर https पर यह अनुमोदन करना है: // पर चल रहा है पोर्ट 443 और wss: // फ़ायरफ़ॉक्स के साथ पोर्ट 12345 पर चल रहा है।

मुझे लगता है कि आपका ब्राउज़र सुरक्षित वेबसाइकिल कनेक्शन की अनुमति नहीं देता है और क्यों कुछ शीर्षलेख गायब हैं।

+1

जब मैंने कंसोल में देखा, तो WebSocket अनुरोध निरस्त किया गया था, मैंने उस पर राइट क्लिक किया और मैंने एक नए टैब में अनुरोध खोला। नए टैब में यूआरएल 'https: //192.168.1.227: 12345 /' था और फ़ायरफ़ॉक्स ने मुझे पोर्ट 12345 के लिए प्रमाण पत्र स्वीकार करने के लिए कहा। पहली बार मैंने कोशिश की, फ़ायरफ़ॉक्स ने मुझे https पोर्ट स्वीकार करने के लिए कहा लेकिन बंदरगाह नहीं 12345. – strat

+1

उत्तर सही है लेकिन थोड़ा अस्पष्ट है। ठीक है यहाँ है। जब आप Wss खोलने का प्रयास करेंगे wss: //mysite.com: 12345 का उपयोग करके कहते हैं, फ़ायरफ़ॉक्स आपको तब तक त्रुटि देगा जब तक कि आप एक अलग फ़ायरफ़ॉक्स टैब खोलें और URL को मारने का प्रयास करें [https]: //mysite.com: 12345 और सुरक्षा अपवाद की पुष्टि करें (जैसे आप फ़ायरफ़ॉक्स पर सामान्य रूप से किसी भी https आधारित कनेक्शन के लिए करते हैं)। यह वास्तव में अजीब है और केवल फ़ायरफ़ॉक्स में होता है। –

+0

धन्यवाद !!! आपके जवाब ने मुझे बहुत मदद की। +1 किया गया :) –

संबंधित मुद्दे