Keystore adalah penyimpanan kriptografi yang aman digunakan dalam pengembangan Android untuk menyimpan kunci privat dan sertifikat penandatanganan aplikasi. Menurut Android Developers Documentation, 2026, setiap APK atau App Bundle sebelum dipublikasikan di Google Play harus ditandatangani dengan tanda tangan digital dari Keystore. Mari kita bahas format Keystore, pembuatan dan penggunaan dalam proyek.
Poin Utama
Keystore (KeyStore) — adalah mekanisme standar Java Cryptography Architecture (JCA) untuk menyimpan kunci kriptografi, sertifikat, dan entri tepercaya. Dalam pengembangan Android, Keystore digunakan untuk menyimpan kunci privat yang digunakan untuk menandatangani aplikasi sebelum dipublikasikan. Tanda tangan menjamin bahwa aplikasi benar-benar dirilis oleh pengembang yang ditentukan dan kodenya tidak dimodifikasi setelah publikasi. Setiap pembaruan aplikasi harus ditandatangani dengan kunci yang sama, jika tidak Google Play akan menolak APK atau App Bundle.
Keystore dapat berisi beberapa entri (alias), yang masing-masing mewakili pasangan kunci (privat dan publik) dengan sertifikat. Alias — nama unik entri yang digunakan aplikasi untuk mengakses kunci saat penandatanganan. Dalam proyek Android tipikal, Keystore berisi satu entri untuk menandatangani versi rilis dan dapat berisi entri tambahan untuk menandatangani build debug. Google Play Console menampilkan sidik jari SHA-1 dan SHA-256 sertifikat untuk setiap aplikasi yang diunggah.
Android Studio menyertakan dukungan bawaan untuk Keystore melalui menu Build → Generate Signed Bundle / APK. Wisaya penandatanganan Android Studio memungkinkan membuat Keystore baru atau memilih yang sudah ada, menentukan alias, kata sandi Keystore dan kunci, serta data sertifikasi (nama organisasi, kota, negara). Data ini disematkan dalam sertifikat dan terlihat oleh pengguna saat memverifikasi tanda tangan APK. Google Play mensyaratkan masa berlaku sertifikat minimal 25 tahun — Android memeriksa tanggal kedaluwarsa saat menginstal aplikasi.
Pembaruan aplikasi di Google Play hanya dimungkinkan dengan kunci yang sama yang digunakan untuk menandatangani versi pertama. Jika Keystore hilang, tidak mungkin memublikasikan pembaruan — aplikasi harus dirilis ulang dengan nama paket (package name) baru. Menurut Google Play Console Help (2026), kunci penandatanganan aplikasi hanya dapat dipulihkan melalui Google Play App Signing — layanan yang menyimpan kunci di sisi Google. Jika pengembang menggunakan opsi ini, kehilangan Keystore lokal tidak kritis.
Proses penandatanganan aplikasi Android meliputi pembuatan ringkasan (hash) dari konten APK dan mengenkripsinya dengan kunci privat dari Keystore. Android SDK Build Tools menyertakan utilitas apksigner yang melakukan penandatanganan dalam format APK Signature Scheme v2 (atau v3 untuk Android 9+). Saat menginstal aplikasi, Android memverifikasi tanda tangan: mendekripsi tanda tangan dengan kunci publik sertifikat, membandingkan hash APK dengan aslinya — jika hash tidak cocok, instalasi ditolak.
Android mendukung beberapa skema penandatanganan: v1 (JAR signing), v2 (APK Signature Scheme), v3 (APK Signature Scheme dengan dukungan rotasi kunci) dan v4 (instalasi inkremental Android 11+). Google Play mensyaratkan v2 atau v3 untuk aplikasi baru. apksigner secara otomatis menambahkan semua skema yang diperlukan saat penandatanganan, jika kunci mendukung algoritma yang sesuai. Android 11+ mendukung instalasi ADB dengan tanda tangan v4, yang mempercepat pemuatan inkremental file APK besar ke perangkat.
Algoritma: Android merekomendasikan penggunaan RSA-2048 atau ECDSA P-256 untuk kunci penandatanganan. Sertifikat harus X.509 v3. Android memeriksa apakah sertifikat masih berlaku saat instalasi — jika sudah kedaluwarsa, instalasi diblokir. Oleh karena itu Google merekomendasikan menetapkan masa berlaku sertifikat minimal 25 tahun. Google Play App Signing menggunakan dua kunci: kunci penandatanganan aplikasi (app signing key) dan kunci unggah (upload key) — kunci unggah digunakan oleh pengembang untuk mengunggah APK ke Console, dan Google menandatangani aplikasi untuk pengguna dengan kunci utama.
Java mendukung dua format utama Keystore: JKS (Java KeyStore) — format kepemilikan Oracle, telah ada sejak JDK 1.2, dan PKCS12 — format terstandarisasi Public-Key Cryptography Standards #12 dari RSA Laboratories. JKS menggunakan format penyimpanan data sendiri dan hanya didukung di ekosistem Java. PKCS12 adalah standar terbuka yang didukung oleh Java, .NET, OpenSSL, Python (cryptography) dan sebagian besar pustaka kriptografi lainnya.
Google Play merekomendasikan PKCS12 sebagai format pilihan untuk Keystore baru yang dibuat setelah tahun 2021. JDK 9 dan yang lebih baru secara default membuat Keystore dalam format PKCS12 (sebelumnya default adalah JKS). Keuntungan utama PKCS12 adalah kompatibilitas: file .p12 dapat dibuka di lingkungan apa pun yang tidak terikat dengan Java. OpenSSL dapat mengekstrak sertifikat dari PKCS12 dan mengonversinya ke format PEM. File JKS memerlukan utilitas JDK untuk dibaca dan tidak dapat diproses oleh OpenSSL.
Konversi antar format dilakukan dengan utilitas keytool dari JDK. Saat migrasi dari JKS ke PKCS12, pastikan semua alias dan kata sandi telah ditransfer dengan benar. Perintah keytool -importkeystore memungkinkan mengimpor konten satu Keystore ke yang lain terlepas dari formatnya. Setelah konversi, file JKS lama sebaiknya dihapus untuk menghindari kebingungan dengan versi kunci. Android Studio mendukung kedua format saat menghasilkan build yang ditandatangani.
| Karakteristik | JKS | PKCS12 |
|---|---|---|
| Standar | Kepemilikan (Oracle) | Terbuka (RSA Labs) |
| Ekstensi | .jks / .keystore | .p12 / .pfx |
| Dukungan | Hanya Java | Java, OpenSSL, .NET, Python |
| Default | Sampai JDK 8 | JDK 9+ |
| Rekomendasi Google | Usang | Pilihan |
Utilitas keytool adalah bagian dari JDK (Java Development Kit) dan menyediakan serangkaian perintah lengkap untuk membuat, melihat, dan mengelola Keystore. Untuk membuat Keystore baru dengan satu pasang kunci, gunakan perintah keytool -genkeypair dengan menentukan format PKCS12, algoritma RSA, ukuran kunci, dan masa berlaku sertifikat. Google Play mensyaratkan masa berlaku sertifikat minimal 25 tahun (9125 hari) — nilai ini disarankan untuk ditentukan dalam parameter -validity.
Contoh pembuatan Keystore dalam format PKCS12 untuk proyek Android. Parameter -dname berisi X.500 Distinguished Name sertifikat. Parameter -ext akan mengaktifkan Subject Alternative Name jika diperlukan — untuk Android, Basic Constraints sudah cukup:
# Membuat PKCS12 Keystore untuk Android
keytool -genkeypair -alias "upload_key" \
-keyalg RSA -keysize 2048 -validity 9125 \
-keystore "release-keystore.p12" \
-storetype PKCS12 \
-dname "CN=Developer,O=Company,C=RU"
Keytool akan meminta kata sandi Keystore dan kata sandi kunci (bisa sama). Parameter -storetype PKCS12 membuat file dalam format modern. -keysize 2048 sesuai dengan persyaratan Google untuk ukuran minimum kunci RSA. -validity 9125 (25 tahun) memastikan kompatibilitas selama seluruh siklus hidup aplikasi yang diharapkan. Setelah membuat Keystore, disarankan untuk memeriksa isinya dengan perintah keytool -list -v -keystore release-keystore.p12.
Untuk memeriksa entri Keystore, gunakan perintah dengan flag -list. Outputnya mencakup alias, tanggal pembuatan dan kedaluwarsa, jenis entri, dan sidik jari SHA-256. Android Studio menampilkan informasi yang sama di dialog Generate Signed Bundle / APK saat memilih Keystore yang ada:
# Melihat entri Keystore
keytool -list -v -keystore "release-keystore.p12" \
-storetype PKCS12
Dalam pipeline CI/CD, Keystore harus disimpan dengan aman dan ditransfer ke agen build tanpa risiko kompromi. GitHub Actions menyediakan Secrets untuk menyimpan file biner dalam format base64. Keystore dienkode dengan perintah base64, string yang dihasilkan disimpan di rahasia repositori, dan pada tahap build didekode kembali menjadi file. GitLab CI menggunakan mekanisme serupa melalui Variables dengan tipe File.
Contoh konfigurasi build CI dengan Keystore di GitHub Actions meliputi pendekodean Keystore dari rahasia, konfigurasi properti Gradle, dan eksekusi build yang ditandatangani. Gradle plugin Android membaca jalur ke Keystore dan kata sandi dari file keystore.properties (dikecualikan dari .gitignore untuk pengembangan lokal) atau dari variabel lingkungan sistem CI:
// build.gradle (app) — konfigurasi penandatanganan
@Override
android {
signingConfigs {
release {
storeFile file("release-keystore.p12")
storePassword System.getenv("STORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
Gradle membaca variabel lingkungan yang ditetapkan oleh sistem CI. File Keystore harus ditempatkan di direktori root modul aplikasi, seperti yang ditentukan dalam storeFile. Demi keamanan, jangan pernah menyimpan kata sandi di repositori — gunakan Secrets sistem CI. Fastlane untuk Android menyediakan plugin supply yang bekerja dengan Google Play Console, tetapi penandatanganan APK tetap memerlukan Keystore lokal di agen.
Alternatifnya adalah Google Play App Signing. Saat menggunakan opsi ini, pengembang hanya mengunggah kunci unggah (upload key) ke Google Play, dan Google menandatangani APK akhir dengan kuncinya sendiri. Dalam hal ini, Keystore hanya digunakan untuk membuat kunci unggah, dan kehilangannya tidak memblokir pembaruan — kunci unggah baru dapat dibuat dan didaftarkan di Console. Google Play App Signing wajib untuk aplikasi baru sejak Agustus 2021.
Kehilangan Keystore adalah salah satu masalah paling kritis dalam pengembangan Android. Tanpa cadangan Keystore, tidak mungkin merilis pembaruan aplikasi yang ada — Google Play menolak APK yang ditandatangani dengan kunci lain. Disarankan untuk menyimpan setidaknya dua cadangan Keystore di penyimpanan fisik atau cloud yang berbeda: misalnya, file terenkripsi di penyimpanan cloud tim dan media fisik di brankas organisasi. Kata sandi Keystore dan kunci disimpan terpisah dari file, misalnya di pengelola kata sandi dengan kontrol akses.
Android Studio saat membuat Keystore baru di dialog Generate Signed Bundle / APK menawarkan untuk mengingat jalur untuk build mendatang. Namun, lingkungan pengembangan itu sendiri tidak membuat cadangan — ini adalah tanggung jawab pengembang. Untuk pengembangan tim, disarankan menggunakan Google Play App Signing dengan transmisi upload key melalui saluran aman ke semua anggota tim. Gradle memungkinkan penandatanganan build debug dengan debug.keystore yang dibuat secara otomatis, yang tidak memerlukan pencadangan — sama untuk semua instalasi Android Studio.
Keamanan Keystore saat transmisi: file .p12 atau .jks hanya boleh ditransfer melalui saluran terenkripsi (SFTP, HTTPS, lampiran email terenkripsi). Jangan pernah menyertakan Keystore di repositori kode sumber — bahkan repositori pribadi. GitGuardian atau GitHub secret scanning secara otomatis mendeteksi publikasi kredensial, tetapi menyimpan Keystore di repositori tetap merupakan pelanggaran keamanan. Untuk CI/CD, gunakan mekanisme rahasia platform (GitHub Actions Secrets, GitLab CI Variables, Jenkins Credentials) dengan enkripsi di tingkat infrastruktur.
Pertanyaan yang Sering Diajukan
Jika Anda menggunakan Google Play App Signing, hanya upload key yang hilang — Anda dapat membuat yang baru dan mendaftarkannya di Google Play Console. Jika App Signing tidak diaktifkan, kehilangan Keystore berarti ketidakmampuan memperbarui aplikasi — Anda harus memublikasikan aplikasi baru dengan package name yang berbeda.
Ya, satu Keystore dapat berisi beberapa alias (entri) dengan kunci berbeda untuk aplikasi berbeda. Untuk setiap aplikasi, disarankan menggunakan alias terpisah dalam satu Keystore. Google Play mendukung kunci berbeda untuk aplikasi berbeda — tidak ada batasan penggunaan satu Keystore untuk beberapa proyek.
Android mendukung kedua algoritma, tetapi ECDSA P-256 lebih disukai: memberikan keamanan setara RSA-2048 dengan ukuran tanda tangan lebih kecil dan verifikasi lebih cepat. Namun, jika diperlukan kompatibilitas dengan Android 4.4 dan yang lebih rendah, pilih RSA — ECDSA hanya didukung dari Android 4.3+.
Android memeriksa masa berlaku sertifikat saat menginstal aplikasi. Jika sertifikat kedaluwarsa, instalasi diblokir — bahkan jika itu adalah pembaruan aplikasi yang ada. 25 tahun adalah periode minimum yang direkomendasikan Google untuk mencakup seluruh siklus hidup aplikasi seluler yang diharapkan tanpa perlu menerbitkan sertifikat baru.
Debug.keystore dibuat secara otomatis oleh Android SDK dan digunakan untuk menandatangani build debug. Sama untuk semua instalasi Android Studio (kata sandi standar android). Keystore rilis dibuat oleh pengembang untuk menandatangani versi yang dipublikasikan di Google Play dan harus disimpan dengan aman — kehilangannya bersifat kritis.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga