Sejak saya meningkatkan proyek saya yang sudah ada dengan iOS 9, saya terus mendapatkan kesalahan:
Telah terjadi kesalahan SSL dan koneksi aman ke server tidak dapat dibuat.
Sejak saya meningkatkan proyek saya yang sudah ada dengan iOS 9, saya terus mendapatkan kesalahan:
Telah terjadi kesalahan SSL dan koneksi aman ke server tidak dapat dibuat.
Jawaban:
Untuk iOS9, Apple membuat keputusan radikal dengan iOS 9, menonaktifkan semua lalu lintas HTTP yang tidak aman dari aplikasi iOS, sebagai bagian dari App Transport Security (ATS) .
Untuk menonaktifkan ATS, Anda dapat mengikuti langkah-langkah ini dengan membuka Info.plist , dan menambahkan baris berikut:
sumber
Meskipun mengizinkan beban sewenang-wenang (
NSAllowsArbitraryLoads = true
) adalah solusi yang baik, Anda tidak boleh sepenuhnya menonaktifkan ATS melainkan mengaktifkan koneksi HTTP yang ingin Anda izinkan:sumber
iOS 9 memaksa koneksi yang menggunakan HTTPS menjadi TLS 1.2 untuk menghindari kerentanan baru-baru ini. Di iOS 8 bahkan koneksi HTTP yang tidak terenkripsi didukung, sehingga versi TLS yang lebih lama juga tidak membuat masalah. Sebagai solusinya, Anda dapat menambahkan cuplikan kode ini ke Info.plist Anda:
* dirujuk ke App Transport Security (ATS)
sumber
Jika Anda hanya menargetkan domain tertentu, Anda dapat mencoba dan menambahkan ini di Info.plist aplikasi Anda:
sumber
Tampaknya iOS 9.0.2 melanggar permintaan ke titik akhir HTTPS yang valid. Kecurigaan saya saat ini adalah membutuhkan sertifikat SHA-256 atau gagal dengan kesalahan ini.
Untuk mereproduksi, periksa UIWebView Anda dengan safari, dan coba buka titik akhir HTTPS arbitrer:
Sekarang coba buka google (karena tentu saja mereka memiliki sertifikat SHA-256):
Menambahkan pengecualian ke keamanan transportasi (seperti yang dijelaskan oleh jawaban @ stéphane-bruckert di atas) berfungsi untuk memperbaiki ini. Saya juga berasumsi bahwa menonaktifkan sepenuhnya
NSAppTransportSecurity
akan berfungsi juga, meskipun saya telah membaca bahwa menonaktifkannya sepenuhnya dapat membahayakan ulasan aplikasi Anda.[EDIT] Saya telah menemukan bahwa hanya menghitung domain yang saya sambungkan di
NSExceptionDomains
dict sudah memperbaiki masalah ini, bahkan ketika membiarkanNSExceptionAllowsInsecureHTTPLoads
set ke true. : \sumber
Masalahnya adalah sertifikat ssl di sisi server. Mungkin ada sesuatu yang mengganggu atau sertifikat tidak cocok dengan layanan. Misalnya ketika sebuah situs memiliki sertifikat ssl untuk www.mydomain.com sementara layanan yang Anda gunakan berjalan di myservice.mydomain.com. Itu adalah mesin yang berbeda.
sumber
Saya mendapatkan kesalahan yang sama ketika saya menentukan URL HTTPS saya sebagai: https://www.mywebsite.com . Namun itu berfungsi dengan baik ketika saya menentukannya tanpa tiga W sebagai: https://mywebsite.com .
sumber
Proyek Xcode -> goto info.plist dan Klik + Tombol lalu Tambahkan (Pengaturan Keamanan Transportasi Aplikasi) Perluas, Izinkan Beban Sewenang-wenang, YA. Terima kasih
sumber
Masalah saya adalah
NSURLConnection
dan itu sudah tidak digunakan lagi di iOS9 jadi saya mengubah semua API menjadiNSURLSession
dan itu memperbaiki masalah saya.NSURLConnection tidak digunakan lagi di iOS9
sumber
Dalam kasus saya, saya menghadapi masalah ini di simulator saya karena tanggal komputer saya ketinggalan dari tanggal saat ini. Jadi, periksa juga kasus ini saat Anda menghadapi kesalahan SSL.
sumber
Saya mendapatkan kesalahan di bawah saat pemutaran
Saya memastikan bahwa saya menambahkan entri di domain pengecualian di file plist dan NSAllowsArbitraryLoads disetel ke true dan saya masih melihat kesalahan.
Kemudian saya menyadari bahwa saya memainkan URL dengan https dan bukan http.
Saya mengatur url video ke http dan masalah terpecahkan.
sumber
Saya mendapatkan kesalahan ini untuk beberapa panggilan jaringan dan bukan yang lain. Saya terhubung ke wifi umum. Wifi gratis itu sepertinya merusak URL tertentu dan karenanya terjadi kesalahan.
Ketika saya terhubung ke LTE, kesalahan itu hilang!
sumber