Saya telah membuat sertifikat CA sendiri dan sekarang saya ingin menginstalnya di perangkat Android Froyo saya (HTC Desire Z), sehingga perangkat mempercayai sertifikat saya.
Android menyimpan sertifikat CA di keystore Java di /system/etc/security/cacerts.bks
. Saya menyalin file ke komputer saya, menambahkan sertifikat saya menggunakan portecle 1.5 dan mendorongnya kembali ke perangkat.
Sekarang, Android sepertinya tidak memuat ulang file secara otomatis. Saya telah membaca di beberapa posting blog bahwa saya perlu me-restart perangkat. Melakukan hal itu mengakibatkan file ditimpa dengan yang asli lagi.
Percobaan saya berikutnya adalah menginstal sertifikat dari kartu SD dengan menyalinnya dan menggunakan opsi yang sesuai dari menu pengaturan. Perangkat memberi tahu saya bahwa sertifikat telah diinstal, tetapi ternyata tidak mempercayai sertifikat. Terlebih lagi, ketika saya mencoba menyalin keystore ke komputer saya, saya masih menemukan stok aslinya cacerts.bks
.
Jadi, apa cara yang tepat untuk menginstal sertifikat CA root saya sendiri di perangkat Android 2.2 sebagai sertifikat tepercaya? Apakah ada cara untuk melakukannya secara terprogram?
sumber
Jawaban:
Sebelum Android KitKat, Anda harus melakukan root pada perangkat Anda untuk menginstal sertifikat baru.
Dari Android KitKat (4.0) hingga Nougat (7.0) itu mungkin dan mudah. Saya dapat menginstal sertifikat Proxy Charles Web Debbuging pada perangkat yang belum di-root dan berhasil mengendus lalu lintas SSL.
Ekstrak dari http://wiki.cacert.org/FAQ/ImportRootCert
Dari Android N dan seterusnya semakin sedikit, lihat kutipan ini dari situs web proxy Charles :
Tambahkan file res / xml / network_security_config.xml ke aplikasi Anda:
Kemudian tambahkan referensi ke file ini dalam manifes aplikasi Anda, sebagai berikut:
sumber
/system/etc/security/cacerts/*.0
) tidak disimpan setelah me-reboot / me-restart AVD, jadi solusi ini tidak berhasil.debug-overrides
, apakah itu berarti ininetwork_security_config
hanya menargetkan varian debug? Jika saya memiliki varian lain seperti varian UAT, maka ini tidak akan berfungsi?Saya menghabiskan banyak waktu untuk mencari jawaban atas hal ini (saya perlu Android untuk melihat sertifikat StartSSL). Kesimpulan: Android 2.1 dan 2.2 memungkinkan Anda mengimpor sertifikat, tetapi hanya untuk digunakan dengan WiFi dan VPN. Tidak ada antarmuka pengguna untuk memperbarui daftar sertifikat root tepercaya, tetapi ada diskusi tentang menambahkan fitur itu. Tidak jelas apakah ada solusi yang dapat diandalkan untuk memperbarui dan mengganti file cacerts.bks secara manual.
Detail dan tautan: http://www.mcbsys.com/techblog/2010/12/android-certificates/ . Di pos itu, lihat tautan ke bug Android 11231 - Anda mungkin ingin menambahkan suara dan permintaan ke bug itu.
sumber
Jika Anda memerlukan sertifikat untuk koneksi HTTPS, Anda dapat menambahkan file .bks sebagai sumber daya mentah ke aplikasi Anda dan memperluas DefaultHttpConnection sehingga sertifikat Anda digunakan untuk koneksi HTTPS.
sumber
Panduan yang ditautkan di sini mungkin akan menjawab pertanyaan awal tanpa perlu memprogram konektor SSL khusus.
Temukan panduan cara mendetail tentang cara mengimpor sertifikat root yang benar-benar membantu Anda memasang sertifikat CA tepercaya pada berbagai versi perangkat Android (di antara perangkat lain).
Pada dasarnya Anda harus:
Unduh: file cacerts.bks dari ponsel Anda.
adb pull /system/etc/security/cacerts.bks cacerts.bks
Unduh file .crt dari otoritas sertifikasi yang ingin Anda izinkan.
Ubah file cacerts.bks di komputer Anda menggunakan BouncyCastle Provider
Unggah file cacerts.bks kembali ke ponsel Anda dan reboot.
Berikut ini adalah langkah demi langkah yang lebih rinci untuk memperbarui ponsel Android sebelumnya: Cara memperbarui keystore otoritas sertifikat keamanan HTTPS pada perangkat pra-android-4.0
sumber
Ada solusi JAUH lebih mudah untuk ini daripada diposting di sini, atau di utas terkait. Jika Anda menggunakan tampilan web (seperti saya), Anda dapat mencapainya dengan menjalankan fungsi JAVASCRIPT di dalamnya. Jika Anda tidak menggunakan tampilan web, Anda mungkin ingin membuatnya untuk tujuan ini. Berikut adalah fungsi yang berfungsi di hampir semua browser (atau tampilan web) untuk memulai instalasi (umumnya melalui repositori os cert bersama, termasuk pada Droid). Ini menggunakan trik yang bagus dengan iFrames. Cukup kirimkan url ke file .crt ke fungsi ini:
MEMPERBARUI:
Trik iframe berfungsi pada Droid dengan API 19 dan yang lebih tinggi, tetapi versi webview yang lebih lama tidak akan berfungsi seperti ini. Gagasan umum masih berfungsi - unduh / buka file dengan tampilan web lalu biarkan os mengambil alih. Ini mungkin solusi yang lebih mudah dan lebih universal (di java aktual sekarang):
Perhatikan bahwa instance_ adalah referensi ke Kegiatan. Ini berfungsi dengan baik jika Anda mengetahui url ke sertifikat. Namun, dalam kasus saya, saya menyelesaikannya secara dinamis dengan perangkat lunak sisi server. Saya harus menambahkan cukup banyak kode tambahan untuk mencegat url pengalihan dan menyebutnya dengan cara yang tidak menyebabkan kerusakan berdasarkan komplikasi threading, tapi saya tidak akan menambahkan semua kebingungan di sini ...
sumber
Apa yang saya lakukan untuk dapat menggunakan sertifikat beginsl cukup mudah. (di telepon root saya)
Saya menyalin /system/etc/security/cacerts.bks ke sdcard saya
Unduh http://www.startssl.com/certs/ca.crt dan http://www.startssl.com/certs/sub.class1.server.ca.crt
Pergi ke portecle.sourceforge.net dan menjalankan portecle langsung dari halaman web.
Membuka file cacerts.bks saya dari sdcard saya (tidak memasukkan apa pun ketika diminta kata sandi)
Pilih impor di portacle dan buka sub.class1.server.ca.crt, im case saya semuanya sudah memiliki ca.crt tapi mungkin Anda perlu menginstalnya juga.
Menyimpan keystore dan menyalinnya baxck ke /system/etc/security/cacerts.bks (saya membuat cadangan file itu terlebih dahulu untuk jaga-jaga)
Reboot ponsel saya dan sekarang saya bisa mengunjungi situs saya menggunakan sertifikat beginsl tanpa kesalahan.
sumber
Langkah-langkah ini berhasil bagi saya:
Atau, saya menemukan opsi-opsi ini yang tidak perlu saya coba sendiri tetapi terlihat mudah diikuti:
Akhirnya, ini mungkin tidak relevan tetapi, jika Anda ingin membuat dan mengatur sertifikat yang ditandatangani sendiri (dengan mkcert) untuk aplikasi PWA Anda (situs web) yang dihosting di server Web IIS lokal, saya mengikuti halaman ini:
https://medium.com/@aweber01/locally-trusted-development-certificates-with-mkcert-and-iis-e09410d92031
Terima kasih dan harap ini membantu !! :)
sumber
Berikut solusi alternatif yang sebenarnya menambahkan sertifikat Anda ke daftar bawaan sertifikat bawaan: Memercayai semua sertifikat menggunakan HttpClient melalui HTTPS
Namun, itu hanya akan berfungsi untuk aplikasi Anda. Tidak ada cara untuk melakukannya secara terprogram untuk semua aplikasi pada perangkat pengguna, karena itu akan menjadi risiko keamanan.
sumber
Jika Anda memiliki perangkat yang di-rooting, Anda dapat menggunakan Modul Magisk untuk memindahkan Sertifikat Pengguna ke Sistem sehingga akan menjadi Sertifikat Tepercaya
https://github.com/yochananmarqos/Move-Certificates
sumber