iOS 8.4 使用启用了 SSL 的 NSStream OSError -9850

标签 ios ssl nsstream

我正在尝试使用启用了 SSL 的 NSStream 自定义协议(protocol)连接到服务器。虽然我不断收到这些错误:

控制台:

CFNetwork SSLHandshake failed (-9850)

来自 [stream streamError] 的应用程序内部:

OSStatus error -9850.

为了确保服务器的 SSL 实现没有搞砸,我还尝试使用 socat 作为中介:

socat -d -d openssl-listen:1588,fork,cert=server.pem,verify=0 TCP4:localhost:1589

我禁用了证书链检查,以确保证书本身没有问题: CFDictionaryAddValue(sslDictionary, CFStreamSSLValidatesCertificateChain, kCFBooleanFalse);

我的最后一根稻草是设置 NSAppTransportSecurity 设置,如下所示:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>my.domain</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
        </dict>
    </dict>
</dict>

行为零变化。

最佳答案

异常键的名称已从 session 中更新。参见 App Transport Security Technote新名称。

NSTemporaryExceptionAllowsInsecureHTTPLoads
  -> NSExceptionAllowsInsecureHTTPLoads
NSTemporaryExceptionRequiresForwardSecrecy
  -> NSExceptionRequiresForwardSecrecy
NSTemporaryExceptionMinimumTLSVersion
  -> NSExceptionMinimumTLSVersion

关于iOS 8.4 使用启用了 SSL 的 NSStream OSError -9850,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398836/

相关文章:

ios - 以编程方式或 openVPN 源代码在 iOS 上设置 VPN 连接

ios - 通过点击 iOS 中的红色减号图标删除 tableview 单元格

ios - 我可以通过编程方式向 PDF 添加链接注释吗?

java.io.FileNotFoundException : (Operation not permitted) error with ./keytool - 在 mac osx (el capitan) 上导入 - Java 6

PHP imap gmail 未连接 [已编辑!!]x2

ios - xcodebuild 将使用 Xcode 6 和备用包 ID 进行协同签名,但不会使用 Xcode 7

java - 间歇性 - SunCertPathBuilderException : unable to find valid certification path to requested target

ios - 检测可以向 NSOutputStream 写入多少字节

objective-c - 您应该如何处理 NSStream 阻塞的可能性?

objective-c - 如何在 NSStream 中使用委托(delegate)?