繁体   English   中英

iOS:SocketRocket-如何实现SSL握手

[英]iOS: SocketRocket - How to implement SSL Handshake

刚与Protobufs一起切换到Websockets。 在IOS上像魅惑一样工作,但是我不确定如何通过SocketRocket Lib实现SSL握手(与NSURLConnection一样)。 有经验的人吗?还是不被支持。

TSL连接已经可以使用,并且SSL固定也可以使用-但是如何通过SocketRocket通过Web套接字正确验证SSL链来实现正确的SSL握手?

BR

编辑:更正我以前的答案中的错误。

假设已将证书添加到钥匙串中,Socket Rocket在后台使用的CFStream将自动处理握手。 如果您需要添加证书,请参见以下问题的答案: iOS:以编程方式在钥匙串中预安装SSL证书

但是,如果您要寻找Pinning,那么直接使用Socket Rocket即可。 使用initWithURLRequest初始化程序,其他所有操作都会自动处理。 对于固定的证书,SocketRocket不会验证您想要的行为的证书链,因为使用固定,您是在专门说信任此证书或仅由此证书签名的证书。 即它不依赖于验证链。

    NSURL *url = [NSURL URLWithString: ServerSocketURLString];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"certificatefilename" ofType:@"cer"];
    NSData *certData = [[NSData alloc] initWithContentsOfFile:cerPath];
    CFDataRef certDataRef = (__bridge CFDataRef)certData;
    SecCertificateRef certRef = SecCertificateCreateWithData(NULL, certDataRef);
    id certificate = (__bridge id)certRef;

    [request setSR_SSLPinnedCertificates:@[certificate]];

    self.clientWebSocket = [[SRWebSocket alloc] initWithURLRequest:request];

    self.clientWebSocket.delegate = self;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM