【发布时间】: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>
行为零变化。
【问题讨论】: