Tutorial ini menunjukkan kepada Anda cara membuat CSR (Certificate Signing Request) untuk Android dengan utilitas Java keytool.
Android tidak membuat CSR TLS public-CA di ponsel itu sendiri: sertifikat public-CA diterbitkan untuk server (atau perangkat yang dikontrol pengguna), dan aplikasi serta browser Android hanya menggunakannya. Alur keytool di bawah ini menghasilkan permintaan PKCS #10 dari Java keystore, yang merupakan jalur yang tepat ketika Anda memerlukan sertifikat TLS yang akan dipercaya oleh aplikasi Android atau situs web yang menargetkan perangkat seluler.
Pilih prosedur yang tepat untuk kasus Anda
“CSR untuk Android” bisa berarti tiga hal yang berbeda. Pastikan Anda berada di halaman yang tepat sebelum menjalankan perintah apa pun:
- Sertifikat TLS untuk server yang akan diakses oleh klien Android. Ini adalah kasus yang paling umum, dan sisa halaman ini membahasnya. Gunakan keytool (di bawah) atau buat CSR di luar server dengan CSR Generator kami, kemudian instal sertifikat yang diterbitkan pada server web, API gateway, atau MQTT broker yang diakses aplikasi Anda.
- Kunci penandatanganan untuk APK atau AAB. Penandatanganan aplikasi Android menggunakan kunci RSA atau EC yang ditandatangani sendiri (self-signed) di dalam Java keystore: tidak ada CA publik yang terlibat dan tidak ada CSR yang perlu diajukan. Buat kunci dengan keytool dari wizard Build > Generate Signed Bundle / APK di Android Studio (atau jalankan keytool secara manual), kemudian daftarkan kunci tersebut dengan Google Play App Signing. Jangan memesan sertifikat publik untuk hal ini.
- Sertifikat perangkat yang disediakan oleh MDM atau EMM. Android Enterprise menerbitkan sertifikat klien ke perangkat yang dikelola melalui SCEP, EST, atau Managed Configurations API. CSR dibuat dan sertifikat diinstal secara otomatis oleh MDM. Tidak ada langkah keytool manual di sini.
Jika kasus Anda adalah yang pertama, lanjutkan. Alurnya memiliki dua bagian: buat PKCS12 keystore yang menyimpan kunci privat, lalu ekspor CSR dari keystore tersebut.
Apa yang Anda perlukan
- Instalasi Java (JDK atau JRE) agar perintah keytool tersedia di PATH Anda. Konfirmasi dengan
keytool -help. Di Windows, folder bin milik Java harus berada di PATH, atau Anda dapat menjalankan keytool langsung dari direktori bin milik JDK. - Fully qualified domain name (FQDN) yang tepat yang ingin Anda amankan (misalnya www.yoursite.com), ditambah nama host lain yang ingin Anda sertakan pada sertifikat yang sama (untuk daftar Subject Alternative Name).
- Detail legal organisasi Anda (negara, provinsi, kota, nama organisasi) untuk Distinguished Name. Gunakan nilai persis seperti yang tercantum pada catatan bisnis publik: CA akan menolak ketidakcocokan.
Langkah 1: Membuat keystore dan kunci privat
Jika Anda sudah membuat CSR, langsung lompat ke mengirim CSR lalu ke petunjuk instalasi SSL Android.
Buka terminal (atau Command Prompt di Windows) dan jalankan perintah keytool di bawah ini. Perintah ini membuat keystore baru dalam format PKCS12, menghasilkan pasangan kunci RSA 2048-bit di dalamnya, dan menyimpan kunci tersebut di bawah alias yang Anda pilih. PKCS12 telah menjadi format keystore default sejak JDK 9; format JKS yang lebih lama sudah usang dan sebaiknya dihindari untuk kunci baru.
keytool -genkeypair
-alias myalias
-keyalg RSA -keysize 2048
-storetype PKCS12
-keystore yoursite.p12
-validity 825
Di Windows, perintah yang sama dalam satu baris terlihat seperti ini (perhatikan path absolut agar Anda dapat menemukan kembali file tersebut):
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore C:certsyoursite.p12 -validity 825
Fungsi masing-masing flag:
- -alias myalias: nama entri di dalam keystore. Pilih label yang akan Anda kenali dan catat. Anda harus menggunakan alias yang sama persis ini saat mengekspor CSR dan lagi saat mengimpor sertifikat yang sudah ditandatangani.
- -keyalg RSA -keysize 2048: kunci RSA 2048-bit adalah standar minimum publik saat ini yang diterima oleh setiap CA. Gunakan 3072 bit untuk kunci dengan masa berlaku lebih panjang, atau buat kunci ECDSA dengan -keyalg EC -groupname secp256r1 untuk kunci yang lebih kecil dan lebih cepat (setiap CA modern menerbitkan sertifikat untuk ECDSA P-256 dan P-384).
- -storetype PKCS12: memaksa penggunaan keystore PKCS12 modern. Ekstensi yang sesuai adalah .p12 (atau .pfx).
- -keystore yoursite.p12: file keystore yang akan dibuat. Ganti nama ini dengan sesuatu yang mudah Anda ingat, dan jaga keamanan file tersebut: file ini menyimpan kunci privat Anda.
- -validity 825: berapa lama sertifikat placeholder self-signed di dalam keystore berlaku. Sertifikat yang ditandatangani dari CA akan menggantikannya nanti, jadi nilai ini tidak memengaruhi masa berlaku produksi.
keytool kemudian meminta kata sandi keystore. Pilih kata sandi yang kuat dan simpan di pengelola rahasia (secrets manager) Anda. Anda akan memerlukannya untuk setiap perintah keytool berikutnya dan untuk server mana pun yang menggunakan keystore tersebut. Dengan keystore PKCS12, kata sandi kunci sama dengan kata sandi keystore, jadi hanya ada satu kata sandi yang perlu diingat.
Langkah 2: Masukkan detail organisasi Anda (DN)
keytool sekarang meminta Distinguished Name (DN): bidang identitas yang akan muncul di dalam CSR. Jawab setiap pertanyaan dengan nilai legal yang tepat untuk organisasi Anda. Gunakan hanya karakter ASCII standar: huruf non-Latin akan merusak permintaan tersebut. Tanda baca juga penting, karena CA mencocokkan nilai Anda dengan catatan bisnis publik.
- What is your first and last name? Ini adalah cara penyebutan keytool untuk Common Name (CN). Masukkan FQDN yang tepat yang ingin Anda amankan (misalnya www.yoursite.com), atau wildcard seperti *.yoursite.com. Jangan memasukkan nama seseorang.
- What is the name of your organizational unit? CA/Browser Forum menghapus atribut organizationalUnitName pada 2022-09-01, dan CA publik menghilangkannya dari sertifikat yang diterbitkan. Perhatikan bahwa menekan Enter tidak membuat bidang ini kosong: keytool menggantinya dengan nilai default miliknya sendiri, sehingga DN akhirnya membawa OU=Unknown dan nilai tersebut ikut masuk ke dalam CSR. Untuk benar-benar menghilangkan atribut ini, lewati pertanyaan-pertanyaan tersebut dan masukkan DN secara langsung dengan -dname, tanpa menyertakan OU dalam string tersebut.
- What is the name of your organization? Masukkan nama lengkap legal perusahaan Anda, persis seperti yang terdaftar (misalnya Your Company LLC). Diperlukan untuk sertifikat OV dan EV; untuk sertifikat Domain Validation (DV) nilai ini diabaikan, sehingga placeholder singkat apa pun sudah cukup.
- What is the name of your city or locality? Tuliskan nama kota lengkap tempat perusahaan Anda terdaftar (misalnya Seattle, bukan SEA).
- What is the name of your state or province? Masukkan nama negara bagian atau provinsi lengkap (misalnya California, bukan CA).
- What is the two-letter country code for this unit? Masukkan kode dua huruf ISO 3166-1 alpha-2 (misalnya US, GB, DE). Lihat daftar resmi ISO jika Anda tidak yakin.
keytool mencetak DN yang telah disusun dan menanyakan Is CN=…, OU=…, O=…, L=…, ST=…, C=… correct? Ketik yes dan tekan Enter untuk mengonfirmasi. Jika Anda menemukan kesalahan ketik, ketik no dan keytool akan mengulang pertanyaan-pertanyaan tersebut dari awal.
Langkah 3: Mengekspor CSR dengan Subject Alternative Name
Sekarang ekspor CSR dengan keytool -certreq. Setiap CA publik memvalidasi nama host terhadap ekstensi Subject Alternative Name (SAN), bukan terhadap Common Name (browser dan pustaka TLS modern sudah berhenti memeriksa CN sejak bertahun-tahun lalu), jadi sertakan SAN bahkan untuk satu nama host saja. Gunakan alias yang sama seperti yang Anda tetapkan pada Langkah 1:
keytool -certreq
-alias myalias
-file certreq.csr
-keystore yoursite.p12
-ext SAN=DNS:www.yoursite.com,DNS:yoursite.com
Di Windows, perintah yang sama dalam satu baris:
keytool -certreq -alias myalias -file certreq.csr -keystore C:certsyoursite.p12 -ext SAN=DNS:www.yoursite.com,DNS:yoursite.com
Tambahkan satu entri DNS: untuk setiap nama host pada sertifikat multi-domain (pisahkan dengan koma, tanpa spasi). Untuk wildcard, gunakan DNS:*.yoursite.com. keytool akan meminta kata sandi keystore, kemudian menulis CSR ke file certreq.csr di direktori Anda saat ini.
Langkah 4: Membuka CSR dan mengirimkannya ke CA
Buka certreq.csr di editor teks mana pun (Notepad, TextEdit, nano, vim). Anda juga dapat menampilkannya di terminal:
cat certreq.csr
Pada Command Prompt Windows:
type certreq.csr
Anda akan melihat blok yang terlihat seperti ini:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----
Pilih seluruh blok, termasuk baris BEGIN NEW CERTIFICATE REQUEST dan END NEW CERTIFICATE REQUEST (beberapa CA menandainya dengan BEGIN CERTIFICATE REQUEST / END CERTIFICATE REQUEST: kedua label ini sama-sama diterima). Salin dan tempelkan ke dalam kolom CSR pada formulir pemesanan Anda.
Periksa CSR sebelum mengirimkannya (opsional)
Ada baiknya mengonfirmasi Common Name, entri SAN, dan ukuran kunci sebelum mengirim permintaan ke CA. keytool mencetak informasi yang sama berdasarkan entri keystore:
keytool -printcertreq -file certreq.csr
Lebih suka menggunakan alat online? Tempelkan isi permintaan tersebut ke CSR Decoder milik SSL Dragon untuk membaca kembali subjek, daftar SAN, dan parameter kunci publik. Pastikan Common Name cocok dengan nama host yang akan digunakan oleh klien dan setiap nama yang diperlukan muncul di dalam daftar Subject Alternative Name.
Apakah Android akan mempercayai sertifikat yang diterbitkan?
Ya, untuk sertifikat mana pun yang ditandatangani oleh CA yang dipercaya secara publik. Android menyertakan sistem penyimpanan sertifikat root yang mencerminkan daftar kepercayaan browser-browser utama, sehingga sertifikat yang diterbitkan berdasarkan salah satu root tersebut akan dipercaya oleh Chrome, WebView, dan aplikasi mana pun yang menggunakan sistem penyimpanan kepercayaan (system trust store), tanpa konfigurasi tambahan.
Ada dua hal penting yang perlu diketahui jika Anda juga menginstal sertifikat (atau root CA privat) di perangkat itu sendiri:
- CA yang diinstal pengguna diabaikan oleh aplikasi di Android 7 dan versi setelahnya. Sejak Android 7 (Nougat), secara default hanya penyimpanan sistem yang dipercaya oleh lalu lintas aplikasi, dan Google Chrome juga mengabaikan CA yang diinstal pengguna. Jika aplikasi Anda harus mempercayai CA privat, pengembang harus mengaktifkannya melalui konfigurasi keamanan jaringan (network security configuration) yang menyertakan
<certificates src="user" />. Sertifikat public-CA tidak memerlukan hal ini: sertifikat tersebut sudah berada di dalam penyimpanan sistem. - Pin ke pengidentifikasi yang stabil, bukan ke satu sertifikat tunggal. Jika Anda menerapkan certificate pinning di aplikasi Anda, pin ke hash SPKI kunci publik atau ke CA penerbit, bukan ke sertifikat leaf tertentu. Jika tidak, pembaruan berikutnya akan mengunci akses pengguna.
Langkah selanjutnya
Setelah CA memvalidasi CSR dan menerbitkan sertifikat Anda, impor sertifikat yang diterbitkan kembali ke keystore yang sama (dengan alias yang sama), lalu terapkan keystore tersebut ke server yang akan diakses oleh klien Android. Lihat panduan instalasi SSL Android kami untuk langkah-langkah instalasi di sisi perangkat, atau panduan instalasi khusus platform di cara menginstal sertifikat SSL jika back end Anda berjalan di Tomcat, JBoss, Nginx, atau server lainnya.
Hemat 10% untuk Sertifikat SSL saat memesan hari ini!
Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10

