使用带有 Socket.io IOS 客户端的客户端证书
Posted
技术标签:
【中文标题】使用带有 Socket.io IOS 客户端的客户端证书【英文标题】:using a client certificate with Socket.io IOS client 【发布时间】:2016-03-09 15:19:15 【问题描述】:我正在尝试连接到需要客户端验证的服务器。我的应用程序中的捆绑包中有一个 .P12 证书,由 CA 生成。有没有办法让 socket.IO 在连接到服务器时出示此证书。 (服务器是一个反向代理,虽然我不认为这会导致问题)
let opts: [String : AnyObject] = ["log": true, "sessionDelegate": self, "forceWebsockets" : true]
self.socket = SocketIOClient(socketURL: "https://myapp.something.com:49447", options: opts)
self.socket.on("connect") [weak self] data, ack in
self?.handleConnect()
return
self.socket.connect()
我有一个委托设置来处理挑战,但 ssl 握手在我到达那个点之前就失败了。
CFNetwork SSLHandshake 失败 (-9824 -> -9829)
func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void)
completionHandler(.UseCredential, NSURLCredential(trust: challenge.protectionSpace.serverTrust!))
【问题讨论】:
【参考方案1】:您需要自己将p12安装到您应用的钥匙串中,参考here
一旦安装,它将可用于 https 连接。
【讨论】:
以上是关于使用带有 Socket.io IOS 客户端的客户端证书的主要内容,如果未能解决你的问题,请参考以下文章
带有 Node.js/Socket.IO 服务器和客户端的 Phonegap 应用程序中的 Android 的 WebSockets
express,用于浏览器客户端和 node.js 客户端的 socket.io 服务器