SSL के साथ WebSocket


115

क्या HTTPS के साथ WebSockets करना संभव है?

HTTPS पर स्विच करते समय, मेरा WebSocket सुरक्षा त्रुटि देता है और नियमित HTTP के साथ पूरी तरह से काम करता है।

नीचे, एक स्निपेट;

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

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

जवाबों:


170

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


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

Flash की अपनी गंभीर समस्याएं भी हैं ... क्या आप एक WebSocket सर्वर बना रहे हैं (यदि ऐसा है तो क्यों), या आप कोई ऐप बना रहे हैं?
पीटर मोस्कोविट्स

1
मेरे पास एक AIR सॉकेट सर्वर है जो हाँ चल रहा है।
एरिक

यदि पृष्ठ HTTP से लोड नहीं है तो WSS का चयन कैसे करें?
अनातोली टेकटोनिक

29

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

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


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

@muaaz आपका WebSocket सर्वर WSS मोड में चलना चाहिए और अधिमानतः उसी SSL सर्टिफ़िकेट / कुंजियों से भरा हुआ होना चाहिए जो आपके वेबसर्वर जो आपके मूल वेब पृष्ठों की सेवा कर रहे हैं, जो websocket सर्वर से कनेक्ट होने का प्रयास कर रहे हैं।
कनक

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

@ माफ करना, मुझे यह नहीं पता कि अपाचे कॉन्फ़िगरेशन को खुद इसे देखने के अलावा।
कनक

21

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


यहां तक ​​कि अगर यह HTTPS के लिए इस्तेमाल किया गया वही सर्टिफिकेट है?
17

1
"ब्राउज़र रेंडर डायलॉग" से आपका क्या मतलब है? पसंद है alert()?
इवान पेरेवेज़ेंटसेव

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

तो क्या इससे उबरने का कोई तरीका है? यदि मैं स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग करता हूं, तो क्या मैं अभी भी वेबसोकेट का उपयोग कर सकता हूं?
ओधाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.