Могу ли я использовать один и тот же файл хранилища ключей для подписи двух разных приложений?

89

Мне нужно загрузить новое приложение, просто дизайн немного отличается. Вчера я создал файл хранилища ключей для подписи приложения. Могу я использовать то же самое?

Ралука Лукачи
источник
5
да, вы можете (также, вы пробовали, прежде чем спрашивать?)
njzk2 07

Ответы:

96

Вы можете использовать это keystoreдля любого количества приложений.

Нет необходимости создавать новое хранилище ключей.

Чираг
источник
6
А что я должен написать для "Alias"?
Доктор Джеки
12
Хранилище ключей СОДЕРЖИТ пары открытого и закрытого ключей , составляющие сертификат подписи. Одно хранилище ключей может содержать несколько пар ключей. «Псевдоним» - это ссылка на определенную пару ключей в хранилище ключей. Одно хранилище ключей может содержать все ваши пары ключей, но у вас должна быть одна пара ключей для каждого приложения. Используйте имя приложения, которое вы подписываете, в качестве псевдонима. У вас могут быть отдельные пароли для вашего хранилища ключей и для каждой пары ключей в нем. Вы можете изменить эти пароли и импортировать / экспортировать пары ключей из хранилища ключей или добавить новые пары ключей в свое хранилище ключей. Все это делается с помощью команды командной строки keytool. Поищи это.
brycewjohnson
@brycewjohnson Можно ли добавлять новые пары в хранилище ключей через графический интерфейс?
CinCout
43

Я приведу контраргумент против консенсусного ответа.

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

Но я могу придумать одну очень вескую причину для создания отдельных хранилищ ключей для отдельных приложений или семейств приложений. Если вы думаете, что, возможно, когда-нибудь захотите продать приложение кому-то еще, чтобы он опубликовал его как обновление до оригинала, вам придется поделиться с ним своим единственным хранилищем ключей и паролем для этого. Вероятно, это не большая проблема, но немного беспокоит вас и, возможно, проблема должной осмотрительности для достаточно крупного покупателя.

Кроме того, я действительно не читаю ту же строку в документации так же, как @ol_v_er. Думаю текущая строка:

Вы должны подписывать все свои приложения одним и тем же сертификатом в течение ожидаемого срока службы ваших приложений.

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

Энн Ганн
источник
6
Лучше всего хранить отдельные хранилища ключей для каждого приложения!
Суфиан,
42

Официальная документация сообщает нам:

В общем, рекомендуемая стратегия для всех разработчиков - подписывать все ваши приложения одним и тем же сертификатом в течение ожидаемого срока службы ваших приложений. Есть несколько причин, по которым вы должны это сделать ...

https://developer.android.com/studio/publish/app-signing.html#considerations

Итак, да, попробуйте подписать все свои приложения одним и тем же сертификатом.

ol_v_er
источник
8
А что я должен написать для "Alias"?
Доктор Джеки
6
Чтобы упростить задачу, используйте одно и то же для всех своих приложений.
ol_v_er
18

Я хочу добавить здесь некоторые пояснения, потому что этот вопрос и предоставленные ответы приводят меня в замешательство. Очень важно понимать, что на самом деле представляет собой хранилище ключей.

Хранилище ключей - это просто средство для безопасного хранения пары открытого / закрытого ключей, которая используется для подписи ваших Android-приложений. Итак, да, вы можете без проблем использовать одно и то же хранилище ключей для подписания нескольких пакетов. Вы также можете использовать один и тот же псевдоним (каждый псевдоним является сертификатом) для подписи нескольких пакетов apks, и он будет работать. Однако это имеет последствия для безопасности. Если ваш единственный псевдоним скомпрометирован, то все ваши приложения будут скомпрометированы.

Однако, если вы намереваетесь однажды продать права на свои приложения, то использование одного и того же псевдонима для всех ваших приложений может быть не очень хорошей идеей. Однако использование одного и того же хранилища ключей при условии, что вы используете разные псевдонимы для каждого apk, не обязательно может быть плохим вариантом. Я уверен, что есть способ переместить сертификат из одного хранилища ключей в другое, чтобы можно было безопасно предоставить покупателю необходимые ключи только для этого сертификата.

Чтобы было очень ясно, хранилище ключей - это просто носитель для хранения ключей. Он не играет никакой роли в процессе подписания apk, а служит только для хранения ключей, которые фактически используются для подписи apk.

Ссылки:

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

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores

Энтони Стиверс
источник
1
Пожалуйста, не публикуйте одинаковые ответы на несколько вопросов. Опубликуйте один хороший ответ, затем проголосуйте / отметьте, чтобы закрыть другие вопросы как дубликаты. Если вопрос не повторяется, адаптируйте свои ответы к вопросу.
Пол Руб
Извинения. Я новичок в ТАК.
Энтони Стиверс,
1
У меня недостаточно репутации, чтобы проголосовать за дубликат. Итак, если вы хотите проголосовать за следующие вопросы как за дубликаты, я считаю, что этот вопрос лучше всего не дублировать. Это первый рейтинг в Google по релевантным ключевым словам и наиболее релевантные ответы. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Энтони Стиверс
Подождите! Как я могу использовать одно и то же хранилище ключей, но с разными псевдонимами для каждого приложения ?!
Зиад Х.
5

Конечно! Вы можете использовать один и тот же файл хранилища ключей сколько угодно раз. Всегда лучше использовать один и тот же файл хранилища ключей для всех разрабатываемых вами приложений. Это поможет, если вы захотите обновить или изменить приложение. В это время вам необходимо подписать свое приложение тем же ключом.

Рохит
источник
2

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

Как вы, возможно, знаете, Android идентифицирует каждое приложение с помощью UID. Если все ваши приложения подписаны одним и тем же сертификатом, вы можете запросить у Android назначение одного и того же идентификатора пользователя более чем одному приложению и, в свою очередь, заставить их работать в одном процессе и обмениваться данными.

Из документа android android: sharedUserId

android: sharedUserId

Имя идентификатора пользователя Linux, который будет использоваться другими приложениями. По умолчанию Android назначает каждому приложению свой уникальный идентификатор пользователя. Однако, если для этого атрибута установлено одинаковое значение для двух или более приложений, все они будут иметь один и тот же идентификатор - при условии, что они также подписаны одним и тем же сертификатом. Приложение с одним и тем же идентификатором пользователя может получать доступ к данным друг друга и, при желании, работать в одном процессе.

суджит
источник
1

Недавнее обновление

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

Вы загрузили APK или Android App Bundle, который подписан ключом, который также используется для подписи APK-файлов, которые доставляются пользователям. Поскольку вы зарегистрированы в программе подписания приложений в Google Play, перед загрузкой вы должны подписать свой APK или Android App Bundle новым ключом.

Рия Пармар
источник
Мне удалось сгенерировать новый ключ на экране подписи apk студии Android. Создайте новое хранилище ключей и псевдоним, и это может сработать. У меня это сработало.
Нуман Карааслан,