Cara Memperbaiki Error failed (kCFStreamErrorDomainSSL, -…

スポンサーリンク

Solusi untuk Error “failed (kCFStreamErrorDomainSSL, -9813)”

Gambaran Umum Error

Error “failed (kCFStreamErrorDomainSSL, -9813)” sering terjadi pada aplikasi iOS saat mencoba membuat koneksi HTTPS yang aman. Kesalahan ini umumnya terkait dengan kebijakan keamanan yang diatur oleh Apple yang dikenal sebagai App Transport Security (ATS). ATS dirancang untuk memastikan bahwa aplikasi hanya melakukan koneksi ke server yang menggunakan protokol yang aman dan terenkripsi. Jika server tidak memenuhi kriteria ATS, maka akan muncul error ini.

Penyebab Umum

Beberapa penyebab umum dari error ini meliputi:

  1. Versi TLS yang tidak didukung: iOS 9 dan versi lebih baru membutuhkan TLS versi 1.2 untuk semua koneksi yang aman. Server yang hanya mendukung versi TLS yang lebih rendah (seperti TLS 1.0) tidak akan dapat terhubung.
  2. Kebijakan App Transport Security: Jika aplikasi tidak mengonfigurasi Info.plist dengan benar untuk mengizinkan pengecualian untuk domain tertentu, maka aplikasi tidak akan dapat melakukan koneksi.
  3. Sertifikat SSL yang tidak valid atau tidak dipercaya: Jika sertifikat SSL yang digunakan oleh server tidak valid atau tidak dikeluarkan oleh otoritas sertifikat yang terpercaya, koneksi akan gagal.
  4. Pengaturan yang tidak memadai di Info.plist: Ketiadaan pengaturan yang benar di file Info.plist aplikasi dapat menyebabkan kegagalan koneksi.

Metode Solusi

Metode 1: Mengonfigurasi Info.plist untuk Pengecualian Domain

Langkah pertama untuk mengatasi error ini adalah dengan menambahkan pengaturan yang tepat di file Info.plist aplikasi Anda. Berikut adalah langkah-langkahnya:

  1. Buka file Info.plist di proyek Xcode Anda.
  2. Tambahkan kunci NSAppTransportSecurity dengan tipe dictionary.
  3. Di dalam NSAppTransportSecurity, tambahkan kunci NSExceptionDomains dengan tipe dictionary.
  4. Di dalam NSExceptionDomains, tambahkan domain server Anda (misalnya yourserver.com) dengan tipe dictionary.
  5. Di dalam domain yang baru ditambahkan, tambahkan kunci berikut dengan nilai yang sesuai:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourserver.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

Metode 2: Mengizinkan Muatan Arbitrary (Sementara)

Jika Anda tidak dapat memperbarui server untuk mendukung TLS 1.2, Anda bisa mengizinkan muatan arbitrary. Namun, metode ini sebaiknya digunakan sementara karena dapat mengurangi keamanan aplikasi Anda:

  1. Tambahkan pengaturan berikut di Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Metode 3: Menentukan Versi TLS Minimal

Jika server Anda hanya mendukung TLS 1.0, Anda dapat mengonfigurasi Info.plist untuk mengizinkan versi tersebut dengan cara berikut:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourserver.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
        </dict>
    </dict>
</dict>

Metode 4: Menggunakan NSURLConnection atau NSURLSession

Pastikan Anda menggunakan NSURLSession atau NSURLConnection dengan pengaturan yang benar. Anda dapat memeriksa kesalahan koneksi dengan menggunakan alat diagnostik:

nscurl --ats-diagnostics https://yourserver.com

Metode 5: Memastikan Forward Secrecy

Pastikan server Anda mendukung forward secrecy. Jika tidak, Anda mungkin perlu menonaktifkan pengaturan ini dalam aplikasi Anda:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourserver.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>

Tips Pencegahan

  • Perbarui server Anda: Pastikan server Anda mendukung TLS 1.2 atau lebih tinggi.
  • Gunakan sertifikat SSL yang valid: Pastikan semua sertifikat SSL dikeluarkan oleh otoritas yang terpercaya.
  • Uji aplikasi secara menyeluruh: Sebelum merilis aplikasi, lakukan pengujian untuk memastikan semua koneksi aman dan tidak ada error terkait SSL.

Ringkasan

Error “failed (kCFStreamErrorDomainSSL, -9813)” biasanya disebabkan oleh kebijakan keamanan yang ketat di iOS terkait koneksi HTTPS. Dengan mengikuti langkah-langkah di atas untuk mengonfigurasi Info.plist, Anda dapat mengatasi masalah ini. Pastikan untuk selalu menjaga keamanan aplikasi Anda dengan menggunakan protokol terkini dan sertifikat yang valid. Jika Anda terus mengalami masalah, pertimbangkan untuk mengupdate server Anda agar sesuai dengan standar keamanan terbaru.

コメント

タイトルとURLをコピーしました