Разработка Android: Keytool, создание хранилища ключей?
Я пытаюсь подготовить свое приложение для рынка google, но это оказывается намного сложнее, чем ожидалось. Я не могу понять всю концепцию подписания Приложения, но, чтобы быть более конкретным, моя проблема в том, что Я установил плагин keytool для eclipse, но когда я хочу создать сертификат, он просит меня выбрать хранилище ключей (введите имя файла и пароль хранилища ключей), я не понимаю, что я должен ввести в качестве файла, потому что он действительно хочет, чтобы я выбрал файл через обзор и как мне продолжить экспорт файла, Google, к сожалению, не придумал очень хорошие или четкие ответы
1 ответов
вам нужно указать местоположение и имя файла для вашего нового файла хранилища ключей, если вы создаете новый. Кроме того, вы можете выбрать "использовать существующее хранилище ключей" и перейти к существующему расположению файла хранилища ключей.
редактировать: я думал, что дам подробный ответ. Надеюсь, эта информация будет полезна.
что такое подпись и зачем она нужна.
механизм подписи apk, используемый android, является примером использование цифровой подписи применяется к байт-коду и ресурсам приложения для обеспечения:
- целостность (без вмешательства в ваше приложение после загрузки)
- подлинность-вы тот, кто выпустил приложение в GooglePlay
чтобы лучше понять цифровая подпись я предлагаю вам также просмотреть шифрование с открытым ключом.
как это работает.
Android использует те же стандартные инструменты JDK, используемые для подписи / проверки стандартных приложений java:
-
jarsigner - данные признаки с
private key
, и проверяет данные с сертификат (т. е. открытый ключ привязан к вашей личности) -
keytool - управляет закрытыми ключами и сертификатами в вашем
keystore
. Эти ключи необходимы дляjarsigner
.
после того, как вы подпишите приложение вручную с jarsigner
или экспорт подписанного приложения с помощью IDE (который использует keytool
и jarsigner
под капотом в любом случае), вы можете найти файлы, связанные с подписью, помещенные в ваша подпись .архив АПК :
- CERT.СФ - файл, содержащий
SHA
хэши компонентов вашего приложения и - CERT.RSA (or .DSA) - цифровая подпись вышеупомянутого файла + публичный сертификат для проверки этой подписи. Подробнее о том, как работает пение здесь.
Как правильно подписать заявление на увольнение.
в этой статье очень хорошо описывает шаги, которые вам нужно выполнить.
Примечание: пожалуйста, рассмотрите важные шаги перед выпуском, прежде чем приступить к подписанию : журналы/ удаление критических строковых литералов, обфускация с должны быть, etc.
ниже я приведу некоторые ключевые моменты процесса :
создайте свой закрытый ключ и поместите его в java keystore
.
это может потребовать создания keystore
во-первых, если у вас его нет. При создании keystore
вам нужно создать Keystore password
, который используется для обеспечения целостности keystore
data (т. е. вы будете предупреждены, что ваше хранилище ключей подделано после того, как кто - то-не Вы-добавил к нему новый сертификат). Практически, этот пароль не очень важен, если вы держите свой безопасная. Ты можешь уйти, если однажды ты забудешь об этом.
при создании private key
, вам также будет предложено создать PrivateKey password
, который будет использоваться для шифрования закрытого ключа внутри ключей. это очень важный пароль, который вам нужно сохранить как она обеспечивает
- код частная ключ действительно частная. и самое главное
- без этого пароля вы не сможете использовать закрытый ключ, чтобы подписать и выхода будущих обновлений для вашего приложения;
при создании нового секретного ключа в Eclipse, вы также будет предложено предоставить идентификационную информацию, которая используется для создания самозаверяющего сертификата.
как следующий шаг ваш private key
из указанного keystore
файл будет использоваться для подписания Приложения и вашего .apk
будет обновляться с файлами, связанными с подписью, описанными выше.
некоторые важные термины :
хранилище - это просто один двоичный файл, содержащий список ваших закрытых ключей / сертификатов в определенном формате. Он программно доступен с помощью API, предоставляемого хранилище.java. Ваше хранилище ключей может содержать несколько записей закрытого ключа, каждая из которых определяется его alias
.
В большинстве случаев ваш keystore
будет иметь один закрытый ключ с одним самозаверяющим сертификатом, соответствующим этому закрытому ключ.
Keystore пароль используется для проверки целостности содержимого хранилища.
Если вы потеряете этот пароль, но у вас все еще есть пароль для закрытого ключа, хранящегося внутри, вы можете "клонировать" свое хранилище ключей и предоставить новый пароль хранилища ключей, выполнив следующий cmd:
keytool-importkeystore-srckeystore путь/к/хранилищу/с/забыли/ПВ-destkeystore путь/к/my / new / keystore
обеспечить новый пароль и оставьте старый пароль хранилища ключей пустым - вы получите только предупреждение. Затем вы можете использовать новое хранилище ключей и избавиться от старого.
Существуют и другие способы получения закрытого ключа без использования пароля хранилища ключей.
пароль закрытого ключа - защита(шифрование) private key
внутри keystore
. Это чрезвычайно важно, поскольку позволяет получить доступ к закрытому ключу, среди прочего, подписывать обновления для вашего приложения. Это вообще очень трудно восстановить его.
самоподписанный сертификатов - очень простой сертификат, привязывающий вашу личность (имя/организация/электронная почта) к вашему открытому ключу. Этот сертификат добавляется в .apk
файл во время операции подписания и будет использоваться на устройстве пользователя для проверки .apk
перед установкой.