2012-03-16 8 views
88

के साथ वेबसाईट क्या https के साथ वेबसाकेट होना संभव है? https का उपयोग करने जा रहे हैं, मेरी WebSocket एक सुरक्षा त्रुटि देता है और नियमित रूप से http के साथ पूरी तरह से काम करता है ...एचटीएमएल 5 एसएसएल

socket = new WebSocket("ws://my_www:1235"); 

धन्यवाद

+0

मेरा बुरा, मुझे एहसास हुआ कि एआईआर सॉकेट सर्वर जो मैं उपयोग कर रहा हूं वह सुरक्षित नहीं है, मुझे flash.net.SecureSocket का उपयोग करने के लिए फिर से लिखना होगा ... – Eric

उत्तर

131

वेबसॉकेट कनेक्शन HTTP या HTTPS हैंडशेक के साथ अपना जीवन शुरू करता है। जब पृष्ठ HTTP के माध्यम से पहुंचाया जाता है, तो आप डब्ल्यूएस या डब्ल्यूएसएस (वेबसॉकेट सुरक्षित: टीएलएस पर डब्ल्यूएस) का उपयोग कर सकते हैं। हालांकि, जब आपका पृष्ठ HTTPS के माध्यम से लोड किया जाता है, तो आप केवल WSS का उपयोग कर सकते हैं - ब्राउज़र सुरक्षा को "डाउनग्रेड" करने की अनुमति नहीं देते हैं।

+0

मेरे पास यही है लेकिन मुझे एहसास हुआ कि एआईआर सॉकेट सर्वर जो मैं उपयोग कर रहा हूं वह सुरक्षित नहीं है, मुझे flash.net.SecureSocket का उपयोग करने के लिए फिर से लिखना होगा ... – Eric

+0

फ़्लैश में इसकी गंभीर समस्याएं भी हैं ... क्या आप इमारत कर रहे हैं एक वेबसॉकेट सर्वर (यदि हां, क्यों), या आप एक ऐप बना रहे हैं? –

+0

मेरे पास एक एआईआर सॉकेट सर्वर है जो चल रहा है। – Eric

19

आप HTTPS पर WebSocket उपयोग नहीं कर सकते हैं, लेकिन आप (TLS से अधिक WebSocket उपयोग कर सकते हैं टीटीएस पर एचटीटीपीएस HTTP है)। यूआरआई में बस "wss: //" का प्रयोग करें।

मेरा मानना ​​है कि फ़ायरफ़ॉक्स का हालिया संस्करण आपको HTTPS पृष्ठ से गैर-टीएलएस वेबसाकेट का उपयोग करने नहीं देगा, लेकिन विपरीत एक समस्या नहीं होनी चाहिए।

+0

तो, समाधान क्या है? मेरे पास http पर चल रहा एक डब्ल्यूएस सर्वर है अब मैंने एक एसएसएल खरीदा है और ब्राउज़र मुझे डब्ल्यूएस से कनेक्ट करने की अनुमति नहीं देता है। मैंने WS को WSS में बदल दिया: // और अब यह वेबसॉकेट – muaaz

+0

@muaaz से कनेक्ट नहीं हो रहा है, आपके वेबसॉकेट सर्वर को WSS मोड में चलाना चाहिए और अधिमानतः उसी SSL प्रमाणपत्र/कुंजी के साथ लोड किया जाना चाहिए जो आपके वेब सर्वर के रूप में लोड हो रहा है जो आपके मूल वेब पेजों की सेवा कर रहा है websocket सर्वर से कनेक्ट करने के लिए। – kanaka

+2

धन्यवाद। बीटीडब्ल्यू, मैंने इसे 'wss: // 'से' ws: // 'के अनुरोध पर प्रॉक्सीइंग (अपाचे का उपयोग करके) द्वारा हल किया है। इसलिए, मैं 'wss: // ws.domain.com' का उपयोग करता हूं और अपाचे उस पर प्रॉक्सी लागू करता है और अनुरोध को पुनर्निर्देशित करता है जहां डब्ल्यूएस सर्वर चल रहा है। उदाहरण: 'ws: //10.12.23.45: 5641/server.php'। और मुझे यह एक बहुत बुरा समाधान पता है - हालांकि, यह मेरे लिए काम करता है। अगर आप अपाचे कॉन्फ़िगरेशन के माध्यम से मुझे मार्गदर्शन करते हैं तो मैं आपकी मदद की सराहना करता हूं। उदाहरण: '.cert' आदि कहां रखना है धन्यवाद! – muaaz

17

1 अतिरिक्त चेतावनी (कानाका/पीटर द्वारा उत्तर के अलावा): यदि आप डब्ल्यूएसएस का उपयोग करते हैं, और सर्वर प्रमाण पत्र ब्राउज़र के लिए स्वीकार्य नहीं है, तो आपको कोई ब्राउज़र प्रदान नहीं किया गया संवाद (जैसा कि यह वेब पृष्ठों के लिए होता है))। ऐसा इसलिए है क्योंकि वेबसाकेट को तथाकथित "सबसोर्स" के रूप में माना जाता है, और प्रमाणपत्र स्वीकार/सुरक्षा अपवाद/उप-स्रोतों के लिए जो भी संवाद नहीं दिए जाते हैं।

+0

भले ही यह एक ही प्रमाणित है जैसा कि एचटीटीपीएस के लिए उपयोग किया जाता है? – vekah

+1

"ब्राउज़र प्रदान किए गए संवाद" से आपका क्या मतलब है? 'अलर्ट()' की तरह? –

+1

डायलॉग जो मूल रूप से ब्राउज़र के भीतर उत्पन्न होते हैं (पृष्ठ नहीं)। जैसे "यह प्रमाणपत्र अमान्य है, क्या आप जारी रखना चाहते हैं?" – oberstet