0

我正在尝试在 iOS 9 上运行我的应用程序——Xcode 7 beta 5。虽然我的 URL 是 https,但 NSURL 连接仍然抛出错误:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

我试图避免使用异常来使其正常工作。我的服务器支持所需的协议:https ://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

谢谢...

更新:发行说明表明他们已经放弃了对 DHE_RSA 密码的默认支持:

“DHE_RSA 密码套件现在在 TLS 客户端的安全传输中默认禁用。这可能会导致无法连接到仅支持 DHE_RSA 密码套件的 TLS 服务器。使用 SSLSetEnabledCiphers 显式启用密码套件的应用程序不受影响,仍将使用 DHE_RSA 密码套件如果明确启用。”

这些是我的服务器支持的密码。在此处查看完整列表: https ://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

所以我想我需要为每个 NSURLConnection 使用 SSLSetEnabledCiphers,或者升级我的服务器以支持 DHE_ECDSA 密码。或者暂时使用异常机制。

我错过了什么?有人得到了使用 SSLSetEnabledCiphers 的示例代码吗?

谢谢。

4

1 回答 1

0

这是交易。默认情况下不支持关于 DHE_RSA 密码套件的无害语言是 Apple 在 beta 5 中的一个相当大的更改。很多服务器默认不支持 ECDHE_ECDSA 密码。为了在我的服务器上支持这些密码,看起来我必须升级一些东西或一些东西。甚至重新编译一些东西。确认。

我假设我只需要确保所有 URL 都是 HTTPS!

具体来说,通过使用 info.plist 中的“NSExceptionRequiresForwardSecrecy = NO”键,我能够支持到我的服务器的仅 HTTPS 链接。如有必要,也不要忘记“NSIncludesSubdomains = YES”键。

有用的背景,特别是如果您不熟悉 Diffie-Helmen 交换、椭圆曲线和前向保密:

http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html

http://blog.lowsnr.net/2014/10/26/configuring-apache-2-2-ssltls-for-forward-secrecy/

于 2015-08-16T03:29:58.657 回答