2014-12-16 18 views
7

हल (निम्नलिखित जवाब)WSS/TLS WebSocket कनेक्शन

मैं Starscream पुस्तकालय का उपयोग कर रहा परीक्षण सर्वर में एक सुरक्षित WebSocket WSS बनाने के लिए हम एक स्व-हस्ताक्षरित प्रमाणपत्र है और मैं इसे खोजने कनेक्शन बनाना असंभव है।

var socket = WebSocket(url: NSURL(scheme: "wss", host: "selfsignedserver.com", path: "/")!) 

लॉग

2014-12-16 10:38:10.260 pruebasignin[2135:363455] CFNetwork SSLHandshake failed (-9807) 
websocket is disconnected: The operation couldn’t be completed. (OSStatus error -9807.) 

और कनेक्ट करने के लिए भी विफल रहता है जब मैं एक सर्वर प्रमाणपत्र मान्य करने के लिए कनेक्ट करने का प्रयास हल

var socket = WebSocket(url: NSURL(scheme: "wss", host: "production.com", path: "/")!) 
,210

लॉग

websocket is disconnected: Invalid HTTP upgrade 
+0

साइट का उपयोग करके भी होस्ट किया जाना चाहिए HTTPS – Rafa

+0

@ राफा हां, मेरा सर्वर https और wss का उपयोग कर रहा है, मुझे अपने स्व-हस्ताक्षरित प्रमाणपत्र – Ch4vi

+0

और https काम कर रहा है, लेकिन हैंडशेक नहीं ... यह अजीब बात है, मुझे यह कभी नहीं मिला, माफ करना, मैं मदद नहीं कर सकता। – Rafa

उत्तर

2

मैं पुस्तकालय को संशोधित करने की इजाजत दी स्व-हस्ताक्षरित प्रमाण पत्र Starscream से समस्या हल हो। इस के लिए जोड़ा जाना चाहिए arcivo निम्नलिखित कोड WebSocket.swift: तो आप स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग कर सकते

if url.scheme == "wss" || url.scheme == "https" { 
     inputStream!.setProperty(NSStreamSocketSecurityLevelNegotiatedSSL, forKey: NSStreamSocketSecurityLevelKey) 
     outputStream!.setProperty(NSStreamSocketSecurityLevelNegotiatedSSL, forKey: NSStreamSocketSecurityLevelKey) 

     /* My code */ 
     var settings = Dictionary<NSObject, NSObject>() 
     settings[kCFStreamSSLValidatesCertificateChain] = NSNumber(bool:false) 
     settings[kCFStreamSSLPeerName] = kCFNull 

     CFReadStreamSetProperty(self.inputStream, kCFStreamPropertySSLSettings, settings) 
     CFWriteStreamSetProperty(self.outputStream, kCFStreamPropertySSLSettings, settings) 
     /* End my code*/ 

    } 
+0

यहां समस्या यह है: एक मैन-इन-द-बीच हमला करना आसान है और आपने इस प्रमाणपत्र के कुछ भी नहीं जीते हैं। यह "सभी को अनुमति देता है और सब कुछ प्रमाणित नहीं करता" मानसिकता सामान्य लगती है ... उत्पादकता में इसका उपयोग करके आप कुछ परेशानी ला सकते हैं। आपको अपने प्रमाण पत्र को अपने प्रमाण पत्र में जोड़ने और इसके खिलाफ सबूत – geo

+0

@geo हां, आप सही हैं, लेकिन मेरे मामले में यह केवल एक परीक्षण सर्वर के लिए है, हमारे पास केवल उत्पादन सर्वर पर प्रमाण पत्र है। – Ch4vi

+0

आप सर्वर पक्ष के लिए क्या उपयोग करते हैं? – uchuugaka

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