Arka ucunuz güvenli bir bağlantı karınca kullanıyorsa NSURLSession'ı kullanırsınız
CFNetwork SSLHandshake failed (-9801)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)
özellikle ATS sürümünü ve SSL sertifikası almak için sunucu yapılandırmanızı kontrol etmeniz gerekir:
Yalnızca ayarlayarak Güvenli Olmayan Bağlantıya İzin VermekNSExceptionAllowsInsecureHTTPLoads = YES
yerine , sunucunuzun ATS (veya sunucu tarafını düzeltmek için daha iyi) için minimum gereksinimi (v1.2) karşılamaması durumunda Düşük Güvenliğe İzin Vermeniz gerekir .
Tek Bir Sunucuda Güvenliği Azaltmaya İzin Verme
<key>NSExceptionDomains</key>
<dict>
<key>api.yourDomaine.com</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
sertifikayı araştırmak ve openssl istemcisini kullanarak sunucu yapılandırmanızı almak için openssl istemcisini kullanın:
openssl s_client -connect api.yourDomaine.com:port //(you may need to specify port or to try with https://... or www.)
.. sonunda bul
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)
Uygulama Aktarım Güvenliği (ATS), Aktarım Katmanı Güvenliği (TLS) protokolü sürüm 1.2 gerektirir.
ATS Kullanarak Bağlanma Gereksinimleri:
App Transport Güvenliği (ATS) kullanmak için bir web hizmeti bağlantısına ilişkin gereksinimler, sunucuyu, bağlantı şifrelerini ve sertifikaları aşağıdaki gibi içerir:
Sertifikalar aşağıdaki anahtar türlerinden biriyle imzalanmalıdır:
En az 256 (SHA-256 veya daha yüksek) özet uzunluğuna sahip Güvenli Karma Algoritma 2 (SHA-2) anahtarı
En az 256 bit boyutunda eliptik eğri şifreleme (ECC) anahtarı
En az 2048 bit uzunluğunda Rivest-Shamir-Adleman (RSA) anahtarı Geçersiz bir sertifika zor bir arızaya neden olur ve bağlantı olmaz.
Aşağıdaki bağlantı şifreleri ileri gizliliği (FS) destekler ve ATS ile çalışır:
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
Güncelleme: openssl'in yalnızca minimum protokol sürümünü sağladığı anlaşılıyor Protokol: TLSv1 bağlantıları