Ошибка подписи Android: записи доверенных сертификатов не защищены паролем

Получил сертификат для подписи apk-файлов неподписанного выпуска Android, поэтому я импортировал cer с помощью команды:

keytool -import -alias alias_name -file cer_name.cer -storepass changeit  -keystore my_keystore.keystore

Но при подписании приложения с помощью студии Android выдает ошибку:

Error:Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key alias_name from store "C:\Users\username\my_keystore.keystore": trusted certificate entries are not password-protected

Мои выводы сказали, что, поскольку ключи не защищены паролем, я попытался еще раз и установил пароль для ключей, используя:

keytool -import -alias alias_name -file cer_name.cer -storepass changeit -keypass changeit -keystore my_keystore.keystore

Но все равно ошибка сохраняется.

Я также попытался выполнить ручную процедуру с помощью jarsigner:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my_keystore.keystore unsigned-release.apk alias_name

Получил ошибку:

jarsigner: Certificate chain not found for: alias_name.  alias_name must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

Пожалуйста, помогите, я не могу получить соответствующую публикацию об этой ошибке для подписи Android apk.


person Sanjay Singh    schedule 07.11.2017    source источник
comment
Я тоже застрял на этом. Я немного расстроен тем, что никто из людей в Интернете с такой же проблемой не указал свои решения, поэтому я запускаю награду.   -  person Bassinator    schedule 11.06.2018
comment
У меня такая же проблема. Я открыл запрос в Google на сброс моего ключа, но они просто изменили ключ загрузки на своей стороне, и у меня все еще нет закрытого ключа для подписи apk. Жаль, что этот процесс плохо задокументирован...   -  person Fabricio    schedule 09.08.2018


Ответы (3)


Файлы *.cer обычно содержат только сертификаты, а не закрытый ключ, необходимый для подписи APK.

Перечислите содержимое хранилища ключей:

keytool -list -v -keystore my_keystore.keystore

И ищите строку Entry type: (для соответствующего псевдонима). Значение должно быть PrivateKeyEntry, а не trustedCertEntry

person bwt    schedule 15.06.2018
comment
Хорошо - это объясняет проблему, но не решение. - person Bassinator; 18.06.2018
comment
Вам нужен файл, содержащий закрытый ключ, например, pkcs12 (обычно *.p12), который вы можете импортировать в хранилище ключей. - person bwt; 18.06.2018
comment
Кстати, ключ обычно не импортируется, а генерируется с нуля, потому что Android не заботится о настоящем сертификате (с действительной цепочкой сертификатов), он использует только закрытый ключ - person bwt; 19.06.2018
comment
Я преобразовал google der в jks, но из-за trustedCertEntry его ошибки выдачи Причина: записи доверенных сертификатов не защищены паролем - person b devloper; 27.02.2021

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

person Timothy Winters    schedule 18.06.2018
comment
Отлично, ты спас мне жизнь. - person ogarzonm; 16.06.2020
comment
@ogarzonm Рад, что смог помочь - person Timothy Winters; 18.06.2020
comment
Отличный инструмент, спасибо, что поделились :) - person Apollo; 11.12.2020

Если вы используете Android Studio, есть очень простое решение для подписания apk, выполните следующие действия. Перейдите в Меню Android -> Найти сборку -> Создать подписанный APK. .. после появления этого нового окна -> нажмите кнопку «Создать новый...». Затем введите данные, как показано ниже, и нажмите ОК -> Далее. введите описание изображения здесь -> Выберите путь к хранилищу ключей, в котором вы хотите сохранить файл .jks для будущего использования -> установите желаемый пароль, который вы хотите -> задайте псевдоним -> пароль -> Заполните данные сертификата -> нажмите «Далее»

следующее окно будет выглядеть, как показано ниже: введите здесь описание изображения

Выберите каталог, в котором будет храниться подписанный .apk (в противном случае он будет сгенерирован внутри папки приложения -> выпуск) -> выбрать версию подписи - > нажмите "Готово"

Подождите, пока APK успешно сгенерируется

person Arun-Khanka    schedule 15.06.2018