Ошибка подписи Android: записи доверенных сертификатов не защищены паролем
Получил сертификат для подписи apk-файлов неподписанных выпусков Android, поэтому я импортировал cer с помощью команды:
keytool -import -alias alias_name -file cer_name.cer -storepass changeit -keystore my_keystore.keystore
Но при подписании приложения с помощью Android Studio выдает ошибку:
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 подписи
4 ответа
Файлы *.cer обычно содержат только сертификаты, а не закрытый ключ, необходимый для подписания APK.
Перечислите содержимое хранилища ключей:
keytool -list -v -keystore my_keystore.keystore
И искать Entry type:
строка (для соответствующего псевдонима). Значение должно быть PrivateKeyEntry
не trustedCertEntry
Я настоятельно рекомендую получить http://keystore-explorer.org/. Эта программа несколько раз спасала мне жизнь, когда у меня возникли проблемы с хранилищем ключей и сертификатами. Это бесплатный и открытый исходный код, а также простой в использовании графический интерфейс. Он может создавать новые пары ключей и импортировать существующие пары ключей в ваше хранилище ключей. Я начал использовать его около 3 лет назад, и он все еще находится в моей папке для инструментов разработчика.
Решение: вместо использования подписи Google по умолчанию используйте нашу собственную подпись. Подпись Google по умолчанию не раскрывает закрытый ключ, поэтому ее нельзя использовать для подписи APK.
Если вы используете Android Studio, есть очень простое решение для подписи apk, выполните следующие действия. Перейдите в меню Android -> Find Build -> Generate Signed APK... после того, как появилось это новое окно -> нажмите кнопку Create new..., Далее введите данные, как показано ниже, и нажмите OK -> Далее. -> Выберите путь к хранилищу ключей, в котором вы хотите сохранить свой файл.jks для будущего использования -> установите желаемый пароль -> укажите имя псевдонима -> пароль -> заполните данные сертификата -> нажмите кнопку "Далее"
следующее окно появится как на снимке экрана ниже
Выберите каталог, который вы хотите подписать.apk будет хранить (в противном случае он будет генерироваться в папке приложения -> выпуск) -> выбрать версию подписи -> нажать "Готово"
Подождите, пока APK не будет успешно создан