Kesalahan kepercayaan IKEv2 Android: kirim CA perantara, bukan akar
Ponsel menolak gateway karena rantai yang diterima berhenti terlalu awal. Putuskan: kirim perantara, perbaiki identitas, atau ubah jenis kunci.
Ponsel menolak terhubung dan mencetak No trusted RSA public key found for vpn.example.net, padahal sertifikat gateway yang sama berfungsi dari laptop di jaringan yang sama. Langkah yang menggoda adalah menerbitkan ulang sertifikat. Sebelum itu, tentukan mana dari tiga kegagalan yang Anda hadapi, karena hanya satu yang menyangkut isi sertifikat.
Tiga kegagalan di balik satu pesan
Android membangun rantai dari sertifikat gateway ke CA yang dipilih di profil VPN, lalu membandingkan nama server dengan profil. Notifikasi melaporkan hasilnya, bukan tahapnya. Kegagalan kepercayaan berarti rantai tidak dapat diselesaikan dengan sertifikat yang dikirim dalam pertukaran; kegagalan identitas berarti rantai valid tetapi nama tidak cocok; kegagalan algoritme berarti perangkat atau profil tidak menerima jenis kunci atau tanda tangan.
| What you see | What it points to | First move |
|---|---|---|
| Chain stops after the leaf in the daemon log | intermediate not loaded or not sent | load the intermediate as CA material |
| Chain validates, name differs from the profile | identity mismatch | fix the profile name or the certificate SAN |
| Chain validates, handshake still fails | key or signature not accepted | compare key type against the device |
Putuskan dengan bukti alih-alih mencoba perbaikan berurutan. Satu percobaan pada tingkat log 2 di daemon memberi tahu Anda di baris mana, dan biayanya lebih kecil daripada menerbitkan ulang sertifikat yang tidak pernah salah.
Putuskan dulu: apakah seluruh rantai tiba?
strongSwan mengirim sertifikat yang dikonfigurasi untuk koneksi itu, dan sertifikat perantara adalah kredensial terpisah. Keduanya harus dimuat sebagai sertifikat CA sebelum daemon dapat menempatkannya di muatan, jadi tata letak di mana sertifikat server ditandatangani oleh perantara, akar adalah jangkar kepercayaan, dan perantara hanya hidup di direktori build CA menghasilkan tepat kegagalan ini: hanya daun di kabel dan rantai berakhir awal di ponsel.
Periksa apa yang dipegang daemon dengan swanctl --list-certs pada penerapan swanctl, atau ipsec listcerts dengan starter lama. Perantara harus muncul sebagai sertifikat CA dengan akar di atasnya. Jika tidak ada, tidak ada opsi klien yang membantu; jika ada, lanjut ke pertanyaan berikutnya.
Lalu periksa apakah itu akan dikirim. Referensi swanctl.conf mendokumentasikan send_cert, yang nilai bawaannya ifasked mengirim sertifikat hanya saat rekan meminta, sedangkan always selalu mengirim. Padanan lama adalah leftsendcert=always di ipsec.conf. Pengaturan itu mengatur pengiriman, bukan ketersediaan, jadi tidak dapat menggantikan perantara yang tidak pernah dimuat daemon.
Jika rantai pendek, muat perantara di tempat daemon mencari
Letakkan perantara di direktori CA, bukan di samping daun: /etc/ipsec.d/cacerts untuk tata letak dengan ipsec.conf, /etc/swanctl/x509ca untuk swanctl, atau jalur yang digantikan paket Anda. Muat ulang konfigurasi dan daftar sertifikat lagi. Beberapa versi juga mengirim bundel yang memuat rantai di dalam berkas daun, tetapi direktori CA adalah tata letak portabel antar versi dan paket.
Periksa juga dari sisi klien. Ponsel hanya melihat apa yang dibawa pertukaran, jadi log daemon pada tingkat 2 harus menunjukkan perantara di antara sertifikat yang dikirim. Jika log menunjukkannya dan ponsel tetap gagal, Anda berada di baris lain tabel dan penyesuaian berkas CA tidak akan mengubah hasil.
Jika rantai lengkap, berhenti menyunting sertifikat
Kegagalan identitas adalah ketidakcocokan antara nama di profil VPN dan nama di sertifikat. Android membandingkan identitas server yang Anda atur dengan sertifikat yang divalidasinya, jadi profil yang menunjuk alamat sementara sertifikat menyebut nama host, atau profil dengan nama host yang tidak dicakup sertifikat, gagal setelah validasi rantai berhasil. Perbaiki sisi yang salah dan jaga profil serta sertifikat tetap selaras.
Kegagalan algoritme muncul dengan rantai valid dan nama cocok. Rilis Android berbeda dalam jenis kunci dan skema tanda tangan yang diterima, dan jenis profil itu sendiri membatasi pilihan. Jika gateway memakai kombinasi lama atau tidak biasa, bandingkan dengan dukungan perangkat sebelum menganggap sertifikat rusak. Log akan menunjukkan jabat tangan berjalan lebih jauh daripada kasus kepercayaan, tanda bahwa rantai bukan lagi masalahnya.
Jangan pasang perantara sebagai akar pengguna di ponsel
Memasang perantara yang hilang sebagai sertifikat pengguna di ponsel membuat peringatan hilang dan mengubah model kepercayaan ponsel bagi setiap aplikasi yang menerima akar terpasang pengguna. Itu juga menyembunyikan cacat pengiriman yang akan mengenai klien berikutnya dan membiarkan gateway mengirim rantai tidak lengkap ke setiap perangkat mendatang. Perbaikan tahan lama ada di server, sekali, untuk semua klien.
Pisahkan tiga keputusan dalam catatan perubahan: sertifikat mana yang dikirim, identitas mana yang dibandingkan, dan algoritme mana yang dinegosiasikan. Gateway yang selalu mengirim rantai lengkapnya, profil yang menamai sertifikat dengan benar, dan jenis kunci yang didukung armada adalah tiga fakta kecil, dan itulah seluruh kegagalan ini.