NSURLAuthenticationMethodServerTrust is ssl



我很难理解NSURLAuthenticationMethodServerTrust。在我的应用程序中,我必须同时使用基于服务器的http和https连接。我的问题是,如果我收到NSURLAuthenticationMethodServerTrust挑战,那么采取HTTPS连接是否是一个安全的假设。我究竟应该如何应对这一挑战。

任何帮助将不胜感激。谢谢

我不确定接收NSURLAuthenticationMethodServerTrust是否总是表示https连接。我不明白为什么或如何普通 http 连接会导致NSURLAuthenticationMethodServerTrust身份验证挑战,所以我假设它是 https,但我不确定。但是NSURLAuthenticationChallenge有一个NSURLProtectionSpace,而又有一个属性receivesCredentialSecurely。文档有点不具体,但我假设此属性表示与服务器的安全连接,在 http/https 的情况下意味着它是 https。

关于要回复的内容,macnetworkprog-mailinglist上有一个关于这个主题的有用线程:问题+答案

摘要:NSURLAuthenticationMethodServerTrust不是关于您(客户端)响应服务器的身份验证质询,而是让您(客户端)有机会检查您是否应该信任服务器。在这种情况下,质询protectionSpace包含一个serverTrust对象/结构,其中包含验证此服务器是否应受信任所需的所有信息。通常,您将使用 SecTrustEvaluate 函数来检查serverTrust并根据该检查的结果进行操作。您可以在此处找到更多信息:正确覆盖 TLS 链验证

如果检查确定服务器应受信任,则使用 serverTrust 对象创建一个NSURLCredential,并将其传递给身份验证质询发送方/完成块。

你可以在这里找到苹果的一个相当广泛的示例项目:http://developer.apple.com/library/ios/#samplecode/AdvancedURLConnections/Introduction/Intro.html它很旧(iOS 3/4,pre-Arc),并且只处理旧的NSURLConnectionDelegate,这些必须委托方法而不是一个(如新的方法和NSURLSessionDelegate)。但是,此处显示的验证以及您可以实施的不同方案仍然适用,并且应该可以轻松转移到NSURLSession

相关内容

最新更新