【发布时间】:2018-02-10 16:17:43
【问题描述】:
我正在使用CFStreamCreatePairWithSocketToHost 创建与服务器的连接。该服务器正在使用自签名证书,我必须对其进行验证。
我一直在尝试寻找任何方法来检索服务器证书,但我迷路了,找不到任何可以让我检索它的方法/类。
我将不胜感激指出如何在这样的代码中获得它:
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef) address, (UInt32) port, &readStream, &writeStream);
NSInputStream *inputStream = (__bridge_transfer NSInputStream *) readStream;
NSOutputStream *outputStream = (__bridge_transfer NSOutputStream *) writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
NSDictionary *settings = @{(NSString *) kCFStreamSSLValidatesCertificateChain: @NO};
CFReadStreamSetProperty((__bridge CFReadStreamRef) inputStream, kCFStreamPropertySSLSettings, (__bridge CFTypeRef) settings);
[inputStream open];
[outputStream open];
【问题讨论】: