Bagi Anda yang menginginkan konteks lebih banyak tentang mengapa hal ini terjadi, selain cara memperbaikinya, maka baca di bawah ini.
Dengan diperkenalkannya iOS 9, untuk meningkatkan keamanan koneksi antara aplikasi dan layanan web, koneksi aman antara aplikasi dan layanan webnya harus mengikuti praktik terbaik . Perilaku praktik terbaik diberlakukan oleh App Transport Security untuk:
- mencegah pengungkapan yang tidak disengaja, dan
- memberikan perilaku default yang aman.
Sebagaimana dijelaskan dalam App Transport Security Technote , saat berkomunikasi dengan layanan web Anda, App Transport Security sekarang memiliki persyaratan dan perilaku berikut:
- Server harus mendukung setidaknya protokol Transport Layer Security (TLS) versi 1.2.
- Cipher koneksi terbatas pada yang menyediakan kerahasiaan ke depan (lihat daftar cipher di bawah ini.)
- Sertifikat harus ditandatangani menggunakan SHA256 atau algoritma hash signature yang lebih baik, dengan kunci RSA 2048 bit atau lebih besar atau 256 bit atau lebih besar Elliptic-Curve (ECC) key.
- Sertifikat yang tidak valid mengakibatkan kegagalan keras dan tidak ada koneksi.
Dengan kata lain, permintaan layanan web Anda harus: a.) Menggunakan HTTPS dan b.) Dienkripsi menggunakan TLS v1.2 dengan kerahasiaan ke depan.
Namun, seperti yang disebutkan dalam posting lain, Anda dapat mengganti perilaku baru ini dari Keamanan Transport Aplikasi dengan menentukan domain tidak aman di Info.plist
aplikasi Anda.
Untuk mengganti, Anda perlu menambahkan NSAppTransportSecurity
> NSExceptionDomains
properti kamus ke Info.plist
. Selanjutnya, Anda akan menambahkan domain layanan web Anda ke NSExceptionDomains
kamus.
Misalnya, jika saya ingin mem-bypass perilaku App Transport Security untuk layanan web di host www.yourwebservicehost.com maka saya akan melakukan hal berikut:
Buka aplikasi Anda dalam Xcode.
Temukan Info.plist
file di Project Navigator dan klik "mouse kanan" dan pilih opsi menu Open As > Source Code . File daftar properti akan muncul di panel kanan.
Letakkan blok properti berikut di dalam kamus properti utama (di bawah yang pertama <dict>
).
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
Jika Anda perlu memberikan pengecualian untuk domain tambahan maka Anda akan menambahkan properti kamus lain di bawah NSExceptionDomains
.
Untuk mengetahui lebih lanjut tentang kunci yang dirujuk di atas, baca teknik yang telah disebutkan ini .