使用NSURLSession信任无效证书

时间:2017-01-19 01:50:23

标签: objective-c macos cocoa webkit nsurlsession

我一直试图使用==> eu-west-1-builder: Waiting for auto-generated password for instance... eu-west-1-builder: It is normal for this process to take up to 15 minutes, eu-west-1-builder: but it usually takes around 5. Please wait. eu-west-1-builder: eu-west-1-builder: Password retrieved! ==> eu-west-1-builder: Waiting for WinRM to become available... 来信任证书,因为从{mac} 10.11开始,NSURLSession变体已被弃用。我正在尝试在基于WebKit的应用程序中实现NSURLConnection,并且在证书可信之后,没有任何反应,如果我重新加载网页,控制台中会出现相同的错误,说证书不受信任。< / p>

我的代码如下:

NSURLSession

以下是NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[defaults objectForKey:@"lastSession"]]]; NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration:defaultConfigObject delegate:self delegateQueue:[NSOperationQueue mainQueue]]; NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Success"); }]; [dataTask resume]; 方法的内容:

didReceiveChallenge

这里有什么我想念的吗?一定的帮助肯定会受到赞赏......

1 个答案:

答案 0 :(得分:0)

使用NSURLSession时,不应该在challenge.sender上调用任何内容。只需调用完成处理程序。但是,您也不应该从请求中获取证书,因为您基本上完全关闭了对该主机名的所有保护。

相反,您应该在应用中对锚证书进行硬编码,并将其添加到可信锚点列表中。然后,使用该锚证书签署服务器的证书,从那时起,您的应用将信任该服务器。

有关详细信息,请阅读https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/OverridingSSLChainValidationCorrectly.html