Що таке файл брелоків для Android та для чого він використовується?


128

Це загальне питання, але особливо мене цікавить його використання для Android. Що таке файл зберігання брелоків і для чого він використовується?

Чи можуть кілька додатків Android використовувати одну і ту ж сховище ключів для підписання програми (що саме означає "підписати" .apk?), І які наслідки це мають (якщо такі є)?


1
Ви ніби плутаєте дві теми. По-перше, зберігання ключів, а друге - підписання APK. Дивіться також "Інтернети безпеки" Миколи Еленкова : Поглиблений посібник з архітектури безпеки Android .
jww

Відповіді:


130

Я відповів би на те, що файл зберігання брелоків - це автентифікація себе тому, хто запитує. Він не обмежується лише підписанням файлів .apk, ви можете використовувати його для зберігання особистих сертифікатів, підписувати дані, що передаються, і цілу різноманітність аутентифікації.

Що стосується того, що ви робите з ним для Android, і, напевно, того, що ви шукаєте, оскільки ви згадуєте про підписання apk, це ваш сертифікат. Ви брендуєте свою заявку за допомогою своїх облікових даних. Ви можете брендувати кілька додатків одним і тим же ключем, насправді рекомендується використовувати один сертифікат для брендування кількох написаних вами програм. Простіше відстежувати, які програми належать вам.

Я не впевнений, що ви маєте на увазі під наслідками. Я думаю, це означає, що ніхто, крім власника вашого сертифіката, не може оновити вашу заявку. Це означає, що якщо ви випустите його в дику природу, втратите сертифікат, який ви використовували для підписання програми, ви не можете випускати оновлення, тому зберігайте цей сертифікат в безпеці та створюйте резервну копію, якщо це потрібно.

Але крім підписання програм для випуску в дику природу, ви можете використовувати його для аутентифікації вашого пристрою на сервері через SSL, якщо ви цього хочете, (також пов’язаного з Android) серед інших функцій.


2
Дуже гарна відповідь. Тут також слід зазначити, що вам потрібен файл зберігання брелоків, якщо ви збираєтесь використовувати "push data" у вашому додатку!
KapteinMarshall

Чи специфічна машина Keystore? Або ми можемо використовувати його на будь-якій машині для оновлення нашого додатка ??
Явар

7
Гарне пояснення. Чи можете ви також пояснити, чому нам потрібні KeyStorePassword, псевдонім ключів, KeyPassword. Має бути зайвим мати три клавіші.
ARK

18

Android Market вимагає, щоб ви підписали всі програми, які ви опублікували, за допомогою механізму відкритого / приватного ключів (сертифікат підписаний вашим приватним ключем). Це забезпечує рівень безпеки, який, крім іншого, не дозволяє віддаленим зловмисникам виштовхувати шкідливі оновлення вашої програми на ринок (усі оновлення повинні бути підписані одним ключем).

З посібника із підпису програм на веб-сайті розробника Android:

Загалом, рекомендована стратегія для всіх розробників полягає в тому, щоб підписувати всі ваші програми одним і тим же сертифікатом протягом очікуваного терміну служби ваших додатків. Є кілька причин, чому ви повинні це зробити ...

Використання одного і того ж ключа має кілька переваг - одне - простіше обмінюватися даними між програмами, підписаними одним і тим же ключем. Інша полягає в тому, що вона дозволяє запускати декілька додатків, підписаних одним ключем, в одному і тому ж процесі, тому розробник може створювати більше "модульних" додатків.


10

Додаткову інформацію про процес підписання ви можете знайти в офіційній документації на Android тут: http://developer.android.com/guide/publishing/app-signing.html

Так, ви можете підписати кілька додатків з однією і тією самою магазином клавіш. Але ви повинні пам’ятати одну важливу річ: якщо ви публікуєте додаток у Play Store, ви повинні підписати його за допомогою сертифіката, що не налагоджує. І якщо ви одного дня хочете опублікувати оновлення для цього додатка, сховище ключів, яке використовується для підписання apk, повинно бути однаковим. В іншому випадку ви не зможете опублікувати своє оновлення.


Ні, це неправильно. Магазин клавіш, який ви використовуєте для підписання apk, може бути різним, але ключ, який ви використовуєте для підпису apk, повинен бути однаковим. Файл зберігання брелоків - це лише файл, який використовувався для зберігання інформації про ключ і сертифікат, ви можете мати кілька ключових об'єктів в одному файлі зберігання ключів.
zeleven

0

Вся ідея keytool полягає в тому, щоб підписати свій apk унікальним ідентифікатором, що вказує джерело цього apk. Файл зберігання ключів (наскільки я розумію) використовується для налагодження, щоб ваш apk мав функціонал keytool без підписання apk для виробництва. Так, так, для налагодження ви повинні мати можливість підписати кілька apk з однією сховищем клавіш. Але розумійте, що при натисканні на виробництво вам знадобляться унікальні клавіатури як ідентифікатори для кожного створеного вами додатка.


Вам не потрібно підписувати додаток для його налагодження ні в емуляторі, ні на фактичному пристрої.
Маркус

Я не мав на увазі, що ви ВІДПОВІСТИ підписати його для налагодження ... але ви можете використовувати keystore як тестову реалізацію вашого keytool.
Адам Шторм

Я не думаю keytool, що це ти маєш на увазі. keytool - програма Java, яка використовується для створення магазинів ключів.
Отра

так, ти маєш рацію, keytool - це не те, що я маю на увазі. Я думаю, що "ключ" - це те, що я маю на увазі. Я просто намагався пояснити запитувачеві, що ви можете мати комунальний apk-ключ для налагодження, але після публікації для кожного apk потрібно буде мати унікальний ключ для редагування та оновлення.
Адам Шторм

Вони не потребують унікальних ключів, хоча ... ви можете підписати кілька apk з одним приватним ключем, фактично бажано, щоб ви це робили. Чи можете ви уявити, як слід відстежувати 10 різних сертифікатів / клавіш для 10 додатків?
Отра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.