Alamofire SSL失败

时间:2015-06-05 16:06:16

标签: swift ssl alamofire

我知道这类问题已被多次询问,但似乎有答案,但我无法让它发挥作用。

在我的环境中,生产是我拥有有效SSL证书的唯一地方。在我的iOS应用程序中使用Alamofire构建反对生产很好。我不想开发/测试生产,我们现在无法获得任何其他环境的有效SSL证书。

我发现this来自Alamofire开发人员的答案提出了解决此问题的方法,但这对我不起作用。当我针对非生产运行我的应用程序时,我看到的失败暗示它正在使用NSURLConnection而不是NSURLSession,因为建议的解决方案似乎依赖。

NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

如果有人可以分享他们的解决方案(也许是一个要点?),那会不会喜欢它。

1 个答案:

答案 0 :(得分:1)

我终于明白了。我引用的SO答案中有一个小而重要的错误。我为它提交了一个编辑,但是会在这里发布工作代码:

"http://www.oracle.com/biee/bi-domain"

问题在于它没有使用let manager = Alamofire.Manager.sharedInstance manager.delegate.sessionDidReceiveChallenge = { session, challenge in var disposition: NSURLSessionAuthChallengeDisposition = .PerformDefaultHandling var credential: NSURLCredential? if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust { disposition = NSURLSessionAuthChallengeDisposition.UseCredential credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust) } else { if challenge.previousFailureCount > 0 { disposition = .CancelAuthenticationChallenge } else { credential = manager.session.configuration.URLCredentialStorage?.defaultCredentialForProtectionSpace(challenge.protectionSpace) if credential != nil { disposition = .UseCredential } } } return (disposition, credential) } 的单例实例。相反,它正在创建一个从未被Alamofire框架使用的全新实例。