首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SocketRocket和固定证书错误?

SocketRocket和固定证书错误?
EN

Stack Overflow用户
提问于 2015-05-17 22:53:54
回答 2查看 545关注 0票数 0

我正在使用SocketRocket,到目前为止一切都很好,今天我想试着锁定一个(自签名的)证书,但我得到了一个错误:

代码语言:javascript
复制
- (void)connectWebSocket {
    webSocket.delegate = nil;
    webSocket = nil;

    NSString *urlString = [NSString stringWithFormat: @"wss://%@:%@", server_ip, server_port];

    //NSLog(@"%@", urlString);

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]
                                             cachePolicy: NSURLRequestUseProtocolCachePolicy
                                         timeoutInterval:5.0];


    // pin down certificate
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"myOwnCertificate" 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]];

    SRWebSocket *newWebSocket = [[SRWebSocket alloc] initWithURLRequest: request];
    newWebSocket.delegate = self;

    [newWebSocket open];

    socketIsOpen = true;

}

错误:'NSURLRequest‘没有可见的@接口声明了选择器'setSR_SSLPinnedCertificates:’

我是不是遗漏了什么?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-05-18 05:23:49

你需要#import "SRWebSocket.h"

SR_SSLPinnedCertificateshttps://github.com/square/SocketRocket/blob/master/SocketRocket/SRWebSocket.hNSURLRequest (CertificateAdditions)类别的属性

票数 0
EN

Stack Overflow用户

发布于 2015-10-10 15:56:57

request需要是NSMutableURLRequest类型。当你的requestNSURLRequest类型时,SR_SSLPinnedCertificates是只读的,所以你可以不设置它。

代码语言:javascript
复制
#pragma mark - NSURLRequest (CertificateAdditions)

@interface NSURLRequest (CertificateAdditions)

@property (nonatomic, retain, readonly) NSArray *SR_SSLPinnedCertificates;

@end

#pragma mark - NSMutableURLRequest (CertificateAdditions)

@interface NSMutableURLRequest (CertificateAdditions)

@property (nonatomic, retain) NSArray *SR_SSLPinnedCertificates;

@end

将您的代码更改为:

代码语言:javascript
复制
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]
                                             cachePolicy: NSURLRequestUseProtocolCachePolicy
                                         timeoutInterval:5.0];

这应该是可行的:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30288166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档