Wenn Ihr Backend eine sichere Verbindung verwendet, verwenden Sie NSURLSession
CFNetwork SSLHandshake failed (-9801)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)
Sie müssen Ihre Serverkonfiguration überprüfen, um Informationen zur ATS-Version und zum SSL-Zertifikat zu erhalten:
Anstatt nur eine unsichere Verbindung durch Festlegen zuzulassenNSExceptionAllowsInsecureHTTPLoads = YES
, müssen Sie stattdessen eine verminderte Sicherheit zulassen, falls Ihr Server die Mindestanforderungen (v1.2) für ATS nicht erfüllt (oder besser, um die Serverseite zu reparieren).
Verringerte Sicherheit für einen einzelnen Server zulassen
<key>NSExceptionDomains</key>
<dict>
<key>api.yourDomaine.com</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
Verwenden Sie den openssl-Client, um das Zertifikat zu untersuchen und Ihre Serverkonfiguration mithilfe des openssl-Clients abzurufen:
openssl s_client -connect api.yourDomaine.com:port //(you may need to specify port or to try with https://... or www.)
..find am Ende
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: //
Session-ID-ctx:
Master-Key: //
Key-Arg : None
Start Time: 1449693038
Timeout : 300 (sec)
Verify return code: 0 (ok)
Für App Transport Security (ATS) ist das TLS-Protokoll (Transport Layer Security) Version 1.2 erforderlich.
Voraussetzungen für die Verbindung mit ATS:
Die Anforderungen für eine Webdienstverbindung zur Verwendung von App Transport Security (ATS) umfassen den Server, die Verbindungschiffren und die Zertifikate wie folgt:
Zertifikate müssen mit einem der folgenden Schlüsseltypen signiert sein:
Secure Hash Algorithm 2 (SHA-2) -Schlüssel mit einer Digest-Länge von mindestens 256 (dh SHA-256 oder höher)
ECC-Schlüssel (Elliptic-Curve Cryptography) mit einer Größe von mindestens 256 Bit
Rivest-Shamir-Adleman (RSA) -Schlüssel mit einer Länge von mindestens 2048 Bit Ein ungültiges Zertifikat führt zu einem harten Fehler und keiner Verbindung.
Die folgenden Verbindungschiffren unterstützen Forward Secrecy (FS) und arbeiten mit ATS:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
Update: Es stellt sich heraus, dass openssl nur die minimale Protokollversion bereitstellt. Protokoll: TLSv1- Links