Jika backend Anda menggunakan semut koneksi aman Anda bisa menggunakan NSURLSession
CFNetwork SSLHandshake failed (-9801)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)
Anda perlu memeriksa konfigurasi server Anda terutama untuk mendapatkan versi ATS dan Info sertifikat SSL:
Alih-alih hanya Mengizinkan Koneksi Tidak Aman dengan menetapkan NSExceptionAllowsInsecureHTTPLoads = YES
, alih-alih Anda perlu Izinkan Keamanan yang Rendah jika server Anda tidak memenuhi persyaratan minimum (v1.2) untuk ATS (atau lebih baik untuk memperbaiki sisi server).
Mengizinkan Keamanan yang Rendah ke Server Tunggal
<key>NSExceptionDomains</key>
<dict>
<key>api.yourDomaine.com</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
gunakan klien openssl untuk menyelidiki sertifikat dan dapatkan konfigurasi server Anda menggunakan klien openssl:
openssl s_client -connect api.yourDomaine.com:port //(you may need to specify port or to try with https://... or www.)
..cari pada akhirnya
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)
App Transport Security (ATS) memerlukan protokol Transport Layer Security (TLS) versi 1.2.
Persyaratan untuk Menghubungkan Menggunakan ATS:
Persyaratan untuk koneksi layanan web untuk menggunakan App Transport Security (ATS) melibatkan server, cipher koneksi, dan sertifikat, sebagai berikut:
Sertifikat harus ditandatangani dengan salah satu dari jenis kunci berikut:
Kunci Secure Hash Algorithm 2 (SHA-2) dengan panjang intis minimal 256 (yaitu, SHA-256 atau lebih besar)
Kunci Elliptic-Curve Cryptography (ECC) dengan ukuran setidaknya 256 bit
Kunci Rivest-Shamir-Adleman (RSA) dengan panjang setidaknya 2048 bit. Sertifikat yang tidak valid menghasilkan kegagalan yang berat dan tidak ada koneksi.
Cipher koneksi berikut mendukung kerahasiaan penerusan (FS) dan bekerja dengan 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
Pembaruan: ternyata openssl hanya menyediakan versi protokol minimal Protokol: tautan TLSv1