Понимание хранилища ключей, сертификатов и псевдонима

Является ли хранилище ключей фактическим сертификатом или является псевдонимом сертификата?

Если я использую другой псевдоним для подписывания своего приложения, будет ли он испортить обновления на рынке? Или мне нужно будет подписать мое приложение с другим хранилищем ключей, чтобы все испортить? И где находится информация под псевдонимом, доступная для просмотра?

Solutions Collecting From Web of "Понимание хранилища ключей, сертификатов и псевдонима"

Файл хранилища ключей, созданный Keytool, хранит пары частных и открытых ключей. Каждая пара или запись, хранящаяся в хранилище ключей, ссылается на уникальный псевдоним. Вкратце:

Ввод ключа: private + открытый ключ пары = идентифицируется псевдонимом

Хранилище ключей защищает каждый закрытый ключ с его индивидуальным паролем, а также защищает целостность всего хранилища ключей с помощью (возможно, другого) пароля.

Например, когда вы подписываете приложение Android с помощью опции «Экспорт подписанного пакета приложений» для инструмента Eclipse для Android, вам предлагается сначала выбрать хранилище ключей, а затем попросить выбрать один псевдоним / запись / пару из этого хранилища ключей. После предоставления паролей для хранилища ключей и выбранного псевдонима приложение подписывается, а открытый ключ (сертификат) для этого псевдонима встроен в APK.

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

Однако есть способ подписать приложение с новым псевдонимом, но он включает клонирование существующего псевдонима в хранилище ключей с помощью keytool -keyclone :

Создает новую запись хранилища ключей, которая имеет тот же секретный ключ и цепочку сертификатов, что и исходная запись.

Оригинальная запись идентифицируется псевдонимом (по умолчанию используется «mykey», если не указано). Новая (целевая) запись идентифицируется dest_alias. Если в командной строке не указан псевдоним адресата, пользователю будет предложено указать его.

Если пароль секретного ключа отличается от пароля хранилища ключей, тогда запись будет клонирована только в том случае, если будет предоставлен действительный ключ. Это пароль, используемый для защиты закрытого ключа, связанного с псевдонимом. Если ключ ключа не указан в командной строке, а пароль секретного ключа отличается от пароля хранилища ключей, пользователю будет предложено его ввести. При желании закрытый ключ в клонированной записи может быть защищен другим паролем. Если в командной строке не указана опция -new, пользователю будет предложено ввести пароль новой записи (и он может выбрать, чтобы он был таким же, как и для закрытого ключа клонированной записи).

Больше информации:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.android.com/guide/publishing/app-signing.html