iOS 8.4 с использованием NSStream с включенным SSL OSError -9850
Я пытаюсь подключиться к серверу с пользовательским протоколом с NSStream, с включенным SSL. Хотя я продолжаю получать эти ошибки:
Приставка:
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>
Ноль изменений в поведении.
1 ответ
Имена ключей исключений были обновлены из сеанса. См. App Transport Security Technote для новых имен.
NSTemporaryExceptionAllowsInsecureHTTPLoads
-> NSExceptionAllowsInsecureHTTPLoads
NSTemporaryExceptionRequiresForwardSecrecy
-> NSExceptionRequiresForwardSecrecy
NSTemporaryExceptionMinimumTLSVersion
-> NSExceptionMinimumTLSVersion