【问题标题】:iOS 8.4 using NSStream with SSL enabled OSError -9850iOS 8.4 使用启用 SSL 的 NSStream OSError -9850
【发布时间】:2015-09-04 13:05:26
【问题描述】:

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

控制台:

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>

行为零变化。

【问题讨论】:

    标签: ios ssl nsstream


    【解决方案1】:

    异常键的名称已从会话中更新。有关新名称,请参阅 App Transport Security Technote

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

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2015-10-14
      • 1970-01-01
      相关资源
      最近更新 更多