Ch4*_*4vi 8 ssl wss websocket ios swift
已解决(以下回答)
我正在使用Starscream库在测试服务器中创建一个安全的websocket wss,我们有一个自签名证书,我发现无法建立连接.
var socket = WebSocket(url: NSURL(scheme: "wss", host: "selfsignedserver.com", path: "/")!)
Run Code Online (Sandbox Code Playgroud)
日志
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.)
Run Code Online (Sandbox Code Playgroud)
当我尝试连接到服务器证书时,有效也无法连接到
SOLVED
var socket = WebSocket(url: NSURL(scheme: "wss", host: "production.com", path: "/")!)
Run Code Online (Sandbox Code Playgroud)
日志
websocket is disconnected: Invalid HTTP upgrade
Run Code Online (Sandbox Code Playgroud)
我通过允许红蜘蛛修改库的自签名证书解决了这个问题。必须在 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*/
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8007 次 |
| 最近记录: |