Создание ключа для подписи apk-файлов

 Для подписи установочного файла по умолчанию используется «Debug-ключ», который имеет ограниченный срок действия - один год. Android проверяет срок действия ключа (сертификата) и его соответствие только при установке. Таким образом, если приложение установлено до истечения срока действия ключа (сертификата), то его все равно можно использовать, но установить или обновить приложение, подписанное истекшим ключом, невозможно (необходимо предварительно удалить предыдущую версию приложения). Для получения ключа (сертификата) с более длительным сроком действия, рекомендуется произвести процедуру самостоятельной генерации ключа и подписать им приложение.


Создание ключа (сертификата) для подписи apk-файлов производится с помощью утилиты keytool.exe, которая находится в папке установки JDK, по умолчанию следующему пути: «C:\Program Files\Java\jdk_версия\bin».

Для создания ключа (сертификата) необходимо в командной строке (меню «Пуск → Выполнить» или комбинация клавиш «Win + R») выполнить следующую команду:

\<ПутьКПапкеХранения>\keytool.exe -genkeypair -dname «CN=<Имя сотрудника>, OU=<Подразделение>, O=<Организация>, L=<Город>, S=<Область или штат>, C=<Двухбуквенный код страны>» -alias <Название ключа> -keyalg DSA -keysize 1024 -sigalg SHA1withDSA -keystore <Путь к файлу хранилища ключей> -storepass <Пароль хранилища ключей> -validity <Срок действия ключа в днях>

Приводим описание всех параметров команды:


CN - commonName – указывается имя сотрудника, например, отвечающего за создание ключа.

OU - organizationUnit – подразделение организации.

O - organizationName – название организации.

L - localityName – название города.

S - stateName – область/провинция/штат и т.п.

C - country – двухбуквенный код страны. Например: RU, UA, US.

alias – название ключа для идентификации. Название ключа должно быть обязательно указано в латинице.

keystore – путь к файлу хранилища ключей, в котором будет сгенерирован файл ключа. Указывается полный путь к файлу и наименование файла в латинице вместе с расширением «.keystore». Если путь содержит пробелы, то его необходимо указывать в кавычках.

storepass – пароль для доступа к хранилищу ключей, пароль должен быть не менее 6 символов.

validity – срок действия ключа в днях, например 365, если необходимо создать ключ сроком на 1 год.


После выполнения команды в командной строке будет выдан запрос на указание пароля ключа следующего содержания:

Enter key password for <Название ключа>

(RETURN if same as keystore password):

Необходимо, ничего не указывая, нажать клавишу «Enter». Пароль для ключа будет совпадать с паролем к хранилищу ключей, указанному в параметре «storepass».


Пример команды:

C:\Program Files\Java\jdk1.6.0_24\bin\keytool.exe -genkeypair -dname «CN=Test, OU=Test, O=Test, L=Москва, S=0, C=RU» -alias Key1 -keyalg DSA -keysize 1024 -sigalg SHA1withDSA -keystore «D:\Test 1\Key1.keystore» -storepass 1234567 -validity 255


Дополнительную информацию о том, как производится процедура генерации ключа для подписи приложения, можно получить по следующим ссылкам: http://developer.android.com/tools/publishing/app-signing.html или http://mainloop.ru/android-programming/android-shag-4-podpisyivaem-prilozhenie.html.