Разработка 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 перед установкой.