Mengekspor profil VPN dari Android terasa seperti langkah pencadangan, dan menu yang menawarkannya tidak melakukan apa pun untuk mengoreksi kesan itu. Yang Anda bawa pergi adalah masukan parser, kunci yang mungkin tidak akan pernah dikembalikan sistem operasi, dan otorisasi yang diterbitkan untuk ponsel itu. Pisahkan ketiganya dan pertanyaan berguna muncul: bagian mana yang masih hilang di perangkat baru?

File adalah bagian yang mudah. Dua lainnya menentukan apakah migrasi berhasil.

Apa yang sebenarnya terkandung dalam profil yang diekspor

Buka file di editor teks sebelum Anda memercayainya. Profil OpenVPN adalah bahasa konfigurasi kecil: remote, proto, data-ciphers, dan sering blok <ca>, <cert>, <key>, atau <tls-crypt> sebaris yang diserahkan klien ke tumpukan TLS-nya. Konfigurasi WireGuard lebih datar: [Interface] memuat PrivateKey dan Address, lalu satu [Peer] per titik akhir yang membawa PublicKey, AllowedIPs, dan Endpoint. IKEv2 datang sebagai .mobileconfig dengan kamus muatan alih-alih blok kunci.

Tidak satu pun dari teks itu adalah kredensial dengan sendirinya. Kredensialnya adalah kunci privat, dan setiap format menempelkannya sebaris atau menunjuk ke alias yang hanya terurai di dalam klien yang membuatnya.

Di mana kunci sebenarnya tinggal di Android

Android menyimpan data aplikasi di bawah /data/data/<package>, hanya bisa dibaca oleh UID aplikasi itu. Tidak ada cara yang didukung untuk menyalin direktori privat aplikasi lain dari ponsel tanpa root, dan adb backup berhenti menjadi jawaban umum setelah Android 12 menghentikannya dan klien mulai mendeklarasikan allowBackup="false". Jadi ekspor dari klien Android berarti apa yang diimplementasikan klien itu, bukan salinan sistem berkas.

Lapisan identitas berada di bawah aplikasi. Jika klien mengimpor kunci Anda ke Android Keystore, materi dihasilkan atau dibungkus di sana, dan ekspor berikutnya dapat membawa referensi ke alias Keystore alih-alih byte. Kunci yang didukung perangkat keras dibuat sehingga bahkan aplikasi pemiliknya tidak dapat membacanya, seperti dijelaskan Keystore documentation, jadi profil yang menunjuk alias itu diimpor dengan bersih di ponsel yang sama dan gagal di tempat lain.

Itu bukan ekspor yang rusak. Itu adalah properti yang diminta platform untuk disediakan.

Apa yang tidak dapat dibawa profil

Sejajarkan objek dengan apa yang akan diterima tujuan:

ObjekBerpindah?Mengapa
Protokol dan titik akhirYa, jika klien tujuan mendukungnyaTeks biasa dalam profil
Sertifikat CA dan pemeriksaan nama hostBiasanyaMateri publik, tetapi nama host tetap harus cocok dengan sertifikat
Sertifikat klienYa, kecuali terikat per perangkatSertifikat bersifat portabel; penerbit menentukan berapa banyak perangkat yang boleh memakai satu
Kunci privatHanya jika dibuat di luar KeystoreKunci yang didukung perangkat keras tidak dapat diekspor, hanya diganti
Akun, MFA, sesi SSOTidakToken kedaluwarsa dan tetap terikat pada perangkat yang memperolehnya
Rute, DNS, dan cakupan aplikasiHanya sebagai teks konfigurasiAndroid menerapkannya saat terhubung melalui VpnService.Builder
Daftar aplikasi tunnel terbelahJarangNama paket berbeda antar perangkat, dan daftar itu adalah status klien

Dua baris menyebabkan sebagian besar kebingungan. Kunci yang dibuat di perangkat dan ditandai tidak dapat diekspor benar-benar hilang bersama data aplikasi, jadi penggantinya adalah kunci baru plus sertifikat yang diterbitkan untuknya. Token sesi yang disalin ke ponsel baru biasanya mati pada penyegaran pertama, yang terbaca sebagai impor gagal.

Impor adalah penguraian, lalu permintaan persetujuan

Di sisi penerima, impor adalah penguraian yang diikuti komit. Klien membaca konfigurasi, memeriksa bahwa setiap blok yang dirujuk ada, lalu menulis definisi terowongan ke sandbox-nya sendiri, itulah sebabnya file yang Anda pilih dari Unduhan bukan yang terhubung setelahnya.

Lalu datang langkah otorisasi yang tidak dapat dilewati file mana pun. Android mewajibkan aplikasi memanggil VpnService.prepare() dan menerima persetujuan Anda sebelum dapat membuat terowongan, jadi profil yang baru diimpor tetap menampilkan dialog sistem sekali. Terowongan kemudian dibangun secara eksplisit melalui addAddress, addRoute, addDnsServer, dan addAllowedApplication atau addDisallowedApplication untuk perutean per aplikasi. Tidak satu pun dari itu tersirat oleh titik akhir, jadi profil yang sama dapat menghasilkan kumpulan rute efektif yang berbeda di dua klien.

Penyiapan berbasis sertifikat menambahkan satu percabangan lagi. Ketika server menerbitkan sertifikat untuk perangkat tertentu, seperti yang dilakukan MDM dan pendaftaran SCEP, memakainya lagi di ponsel kedua entah berfungsi sampai server menegakkan satu sesi per identitas atau gagal pada jabat tangan TLS. Periksa kebijakan penerbit sebelum Anda berencana memakainya lagi.

Verifikasi perangkat baru sebelum Anda menonaktifkan yang lama

Biarkan ponsel lama tetap terhubung sampai yang baru lulus sesuatu yang lebih baik daripada ikon hijau. Konfirmasikan alamat keluar dari perangkat baru dan resolver DNS yang benar-benar dipakainya. Jika split tunneling penting, jalankan aplikasi yang seharusnya melewati terowongan dan satu yang tidak, lalu lihat mana yang mencapai penyedia Anda.

Satu pemeriksaan menyelesaikan soal alamat keluar. Buka https://ifconfig.me di peramban ponsel, lalu jalankan curl -s https://ifconfig.me dari laptop di Wi-Fi yang sama dan bandingkan kedua jawaban dengan alamat yang diberikan penyedia Anda.

Baru setelah itu nonaktifkan identitas lama, dan lakukan melalui penerbit: cabut sertifikatnya atau hapus perangkat dari akun. Menghapus file dari Unduhan tidak mengakhiri apa pun, karena dua perangkat dengan sertifikat yang sama terlihat identik di log server.

Jika ekspor ternyata tidak portabel, solusinya adalah pendaftaran baru, bukan bundel konfigurasi publik. Minta profil perangkat kedua, atau buat pasangan kunci di ponsel baru dan kirim CSR; lebih lambat, dan itu jalur yang didukung penerbit.

Jalankan daftar periksa sebelum Anda menghapus apa pun: perangkat baru terhubung, alamat keluar dan DNS cocok, cakupan per aplikasi sesuai maksud Anda, identitas lama dicabut, dan file konfigurasi yang Anda simpan berada di penyimpanan terenkripsi.

Artikel terkait