为 SocketRocket 实现对公钥的 SSL Pinning

前些天为 LeanCloud iOS SDK 的实时通信模块支持了 SSL pinning。

实时通信模块目前使用 SocketRocket 来实现长连接,它是一个 iOS 和 OS X 平台上的 WebSocket 实现。

SocketRocket 支持 pin 整个证书,但这样做存在一个问题:如果服务端更新了证书,SSL pinning 就会失败。更好的做法是 pin 证书的公钥,因为公钥可以保证长期不变。

于是,我为 SocketRocket 实现了对公钥的 SSL pinning。顺便提交了一个 pull request