Apa file Android keystore, dan untuk apa file itu digunakan?

128

Ini adalah pertanyaan umum, tetapi khususnya saya tertarik menggunakannya untuk Android. Apa itu file keystore, dan untuk apa file itu digunakan?

Bisakah beberapa aplikasi Android menggunakan keystore yang sama untuk menandatangani aplikasi mereka (apa sebenarnya artinya "menandatangani" .apk?), Dan apa implikasinya (jika ada) dari ini?

Christopher Perry
sumber
1
Anda sepertinya menggabungkan dua topik. Pertama adalah keystore, dan kedua adalah penandatanganan APK. Juga lihat Internal Keamanan Android Nikolay Elenkov : Panduan Mendalam untuk Arsitektur Keamanan Android .
jww

Jawaban:

130

Jawaban yang akan saya berikan adalah file keystore adalah untuk mengotentikasi diri Anda kepada siapa pun yang bertanya. Ini tidak terbatas hanya pada penandatanganan file .apk, Anda dapat menggunakannya untuk menyimpan sertifikat pribadi, menandatangani data yang akan dikirim, dan berbagai macam otentikasi.

Dalam hal apa yang Anda lakukan dengannya untuk Android dan mungkin apa yang Anda cari sejak Anda menyebutkan untuk menandatangani apk, itu adalah sertifikat Anda. Anda menandai aplikasi Anda dengan kredensial Anda. Anda dapat memberi merek beberapa aplikasi dengan kunci yang sama, pada kenyataannya, disarankan agar Anda menggunakan satu sertifikat untuk memberi merek beberapa aplikasi yang Anda tulis. Lebih mudah untuk melacak aplikasi apa yang menjadi milik Anda.

Saya tidak yakin apa yang Anda maksudkan dengan implikasi. Saya kira itu berarti tidak ada seorang pun selain pemegang sertifikat Anda yang dapat memperbarui aplikasi Anda. Itu berarti bahwa jika Anda melepaskannya ke alam liar, kehilangan sertifikat yang Anda gunakan untuk menandatangani aplikasi, maka Anda tidak dapat merilis pembaruan, jadi simpan sertifikat itu agar aman dan dicadangkan jika perlu.

Tapi selain menandatangani apks untuk dirilis ke dalam, Anda dapat menggunakannya untuk mengotentikasi perangkat Anda ke server melalui SSL jika Anda menginginkannya, (juga terkait Android) di antara fungsi-fungsi lainnya.

Otra
sumber
2
Jawaban yang sangat bagus Harus juga dicatat di sini bahwa Anda memerlukan file keystore jika Anda akan menggunakan "data push" di aplikasi Anda!
KapteinMarshall
Apakah mesin Keystore spesifik? Atau kita dapat menggunakannya di mesin apa saja untuk memperbarui aplikasi kita ??
Yawar
7
Penjelasan Bagus Bisakah Anda juga menjelaskan mengapa kami memerlukan KeyStorePassword, Key alias, KeyPassword. Tampaknya berlebihan untuk memiliki tiga kunci.
BAHTERA
18

Android Market mengharuskan Anda untuk menandatangani semua aplikasi yang Anda terbitkan dengan sertifikat, menggunakan mekanisme kunci publik / pribadi (sertifikat ditandatangani dengan kunci pribadi Anda). Ini memberikan lapisan keamanan yang mencegah, antara lain, penyerang jarak jauh dari mendorong pembaruan berbahaya ke aplikasi Anda ke pasar (semua pembaruan harus ditandatangani dengan kunci yang sama).

Dari Panduan Penandatanganan Aplikasi situs Pengembang Android:

Secara umum, strategi yang disarankan untuk semua pengembang adalah menandatangani semua aplikasi Anda dengan sertifikat yang sama, sepanjang umur aplikasi Anda yang diharapkan. Ada beberapa alasan mengapa Anda harus melakukannya ...

Menggunakan kunci yang sama memiliki beberapa manfaat - Salah satunya adalah lebih mudah untuk berbagi data antara aplikasi yang ditandatangani dengan kunci yang sama. Lain adalah bahwa hal itu memungkinkan beberapa aplikasi ditandatangani dengan kunci yang sama untuk berjalan dalam proses yang sama, sehingga pengembang dapat membangun lebih banyak aplikasi "modular".

Alexander Lucas
sumber
10

Anda dapat menemukan informasi lebih lanjut tentang proses penandatanganan pada dokumentasi Android resmi di sini: http://developer.android.com/guide/publishing/app-signing.html

Ya, Anda dapat menandatangani beberapa aplikasi dengan keystore yang sama. Tetapi Anda harus mengingat satu hal penting: jika Anda menerbitkan aplikasi di Play Store, Anda harus menandatanganinya dengan sertifikat non debug. Dan jika suatu hari Anda ingin mempublikasikan pembaruan untuk aplikasi ini, keystore yang digunakan untuk menandatangani apk harus sama. Jika tidak, Anda tidak akan dapat memposting pembaruan Anda.

Raphaël Titol
sumber
Tidak, ini salah. Keystore yang Anda gunakan untuk masuk apk bisa berbeda, tetapi kunci yang Anda gunakan untuk masuk apk harus sama. File keystore hanya file yang digunakan untuk menyimpan informasi kunci dan sertifikat, Anda dapat memiliki beberapa entitas kunci dalam file keystore yang sama.
zeleven
0

Seluruh ide keytool adalah untuk menandatangani apk Anda dengan pengidentifikasi unik yang menunjukkan sumber apk itu. File keystore (dari apa yang saya mengerti) digunakan untuk debug sehingga apk Anda memiliki fungsi keytool tanpa menandatangani apk Anda untuk produksi. Jadi ya, untuk keperluan debugging Anda harus dapat masuk beberapa apk dengan satu keystore. Tapi pahamilah bahwa, setelah mendorong produksi Anda akan memerlukan keytools unik sebagai pengidentifikasi untuk setiap apk yang Anda buat.

Adam Storm
sumber
Anda tidak perlu menandatangani aplikasi untuk men-debugnya, baik di emulator atau di perangkat yang sebenarnya.
Marcus
Saya tidak bermaksud Anda HARUS menandatanganinya untuk men-debug itu ... tetapi Anda dapat menggunakan keystore sebagai implementasi pengujian keytool Anda.
Adam Storm
Saya tidak berpikir keytoolapa yang Anda maksudkan. keytool adalah program java yang digunakan untuk menghasilkan keystores.
Otra
ya Anda benar, keytool bukan yang saya maksud. Saya kira 'kunci' adalah apa yang saya maksud. Saya hanya mencoba menjelaskan kepada penanya bahwa Anda dapat memiliki kunci apk komunal untuk debugging, tetapi setelah diterbitkan, setiap apk harus memiliki kunci unik untuk mengedit dan meningkatkan.
Adam Storm
Mereka tidak perlu kunci unik ... Anda dapat masuk beberapa apk dengan satu kunci pribadi, sebenarnya Anda lebih suka melakukannya. Bisakah Anda bayangkan melacak 10 sertifikat / kunci berbeda untuk 10 aplikasi?
Otra