Розуміння магазину ключів, сертифікатів та псевдонімів


95

Магазин ключів - це справжній сертифікат, чи псевдонім сертифіката?

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

Відповіді:


127

Файл магазину ключів, сформований Keytool, зберігає пари приватних та відкритих ключів. Кожна пара або запис, що зберігаються у сховищі ключів, позначається унікальним псевдонімом. Коротко:

Запис у сховищі ключів = пара приватний + відкритий ключ = ідентифікований псевдонімом

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

Наприклад, коли ви підписуєте програму 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


3
Сайт розробника пропонує використовувати однаковий сертифікат для всіх ваших програм. Отже, чи означає це, що поки я використовую один і той же магазин ключів, я можу використовувати будь-який псевдонім із будь-яким паролем, і це не буде заплутувати оновлення, оскільки це лише посилання? Справжній магазин ключів є важливою частиною?
Роджер

1
Я переписав свою відповідь, щоб бути точнішим. Коротше кажучи, ви дійсно повинні використовувати той самий псевдонім, щоб підписувати всі оновлення вашої програми.
Хуліо Горге

2
@Julio То чи найкращою практикою було б використовувати однаковий псевдонім для всіх різних додатків, які ви хочете опублікувати, як пропонує сайт розробників? Я не бачу причини створювати окремий псевдонім для всіх ваших додатків.
Tony Chan

@ JulioGorgé-Гей, я просто хотів би знати, що R-псевдонім чутливий до регістру .. ??
Звати Нілай

@ JulioGorgé, ви маєте на увазі той самий псевдонім або той самий ключ. Псевдонім - це просто ім’я, я можу перейменувати псевдонім. Ви можете випустити оновлення до тих пір, поки ключі (конкретні відкриті ключі) у програмі збігаються.
Dheeraj Bhaskar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.