Ошибка keytool. Подделка хранилища ключей или неверный пароль
Я получаю следующую ошибку при создании сертификатов на моей локальной машине.
C:\Users\abc>keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
Я думаю, что есть некоторые проблемы в версии JDK. Я выполнил ту же команду на моей машине коллег, и она работает нормально.
Пожалуйста, поделитесь своими мнениями.
25 ответов
Из вашего описания я предполагаю, что вы находитесь на машине Windows, и ваш дом ABC
Так что теперь: причина
Когда вы запускаете эту команду
keytool -genkey -alias tomcat -keyalg RSA
поскольку вы не указываете явное хранилище ключей, оно будет пытаться сгенерировать (и в вашем случае, если вы получаете исключение, чтобы обновить) хранилище ключей C:\users\abc>.keystore
и, конечно, вам нужно предоставить старый пароль для.keystore, хотя я считаю, что вы предоставляете свою версию (новую).
Решение
Либо удалить
.keystore
отC:\users\abc>
местоположение и попробуйте командуили попробуйте следующую команду, которая создаст новое хранилище xyzkeystore:
keytool -genkey -keystore xyzkeystore -alias tomcat -keyalg RSA
Замечания: -genkey
стар сейчас пользуюсь -genkeypair
Хотя оба работают одинаково.
Я решил это, используя пароль по умолчанию для хранилища ключей cacerts: 'changeit'
Этот ответ будет полезен для нового пользователя Mac (работает для Linux, Windows 7 64 бит).
Пустой пароль работал на моем Mac . (вставьте строку ниже в терминале)
keytool -list -v -keystore ~/.android/debug.keystore
когда это подсказывает
Enter keystore password:
просто нажмите кнопку ввода (ничего не вводите). Это должно работать.
Пожалуйста, убедитесь, что его по умолчанию debug.keystore
файл, не для вашего файла хранилища ключей на основе проекта (пароль может измениться для этого).
Хорошо работает и для MacOS Sierra 10.10+.
Я слышал, это работает и для Linux. я еще не проверял это в Linux.
Я решил эту проблему, используя пароль по умолчаниюchangeit.
Использование changeit для пароля также важно.
Эта команда наконец-то сработала для меня (с пристани):
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 360 -keysize 2048
В Tomcat 8.5 обратите внимание, чтобы написать правильное имя атрибутов. Это мой код на server.xml:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore" certificateKeystorePassword="mypassword" type="RSA"/>
</SSLHostConfig>
</Connector>
Вы можете посетить https://tomcat.apache.org/tomcat-8.5-doc/config/http.html чтобы увидеть все атрибуты.
Если вы работаете над подписанием своего приложения Flutter, следуя этому руководству. Создайте и выпустите приложение для Android и выполните эту ошибку. Надеюсь, этот ответ вам поможет.
В моем случае я изменил путь для хранения своего key.jks. Это случилось со мной, потому что на этом пути был существующий файл.
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
Эта команда сохраняет файл key.jks в вашем домашнем каталоге. Чтобы сохранить его в другом месте, измените аргумент, который вы передаете параметру -keystore.
В моем случае,
keytool -genkey -v -keystore /Users/Y/Desktop/X/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyYour
т.е. Y - имя пользователя и X - имя папки
Тогда вам будет предложено Введите пароль для хранилища ключей: и Повторно введите новый пароль. Здесь вы можете использовать любой пароль, какой захотите.
Однако держите файл хранилища ключей закрытым; не проверяйте это в общедоступном источнике!
Empty password worked for me on my Mac
keytool -list -v -keystore ~/.android/debug.keystore
hit Enter then It's show you
Enter keystore password:
here just hit Enter for empty password
Проверьте вашу домашнюю папку ~/.gradle/gradle.properties
, Иногда, если у вас есть gradle.properties
в домашнем каталоге он берет подробности оттуда. Либо вы можете изменить это или удалить файлы. Тогда он возьмет необходимые данные из вашей локальной папки.
Работает на Windows
откройте командную строку (нажмите клавишу Windows + R, затем введите "cmd" без кавычек в появившемся диалоговом окне и нажмите клавишу ввода).
затем введите код сниффа ниже:
- cd C: \ Program Files \ Java \ jdk1.7.0_25 \ bin
затем введите следующую команду
- keytool -list -keystore "C:/Documents and Settings/ Ваше имя /.android/debug.keystore"
Затем он запросит пароль Keystore. Пароль по умолчанию - это тип "android", введите или просто нажмите "DONT TYPE ANY PASSWORD".
Обобщая советы с этой страницы, я закончил со следующим:
keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA
Затем я получил набор вопросов относительно имени, организации, местоположения и пароля для моего псевдонима.
С openjdk у меня была такая же проблема.
После того, как я обновил openjdk до «11.0.17», проблема исчезла.
Для меня я решил это, изменив пароли с арабской буквы на английскую букву, но сначала я пошел в папку и удалил сгенерированный ключ, затем он работает.
В моем случае с Xamarin Forms 4.7 и Visual Studio 2019 16.7.0 Preview 3.1 проблема заключалась в несоответствии версий недавно обновленных инструментов сборки Android (apksigner) и JDK. Обновлен JDK до последней версии и указан новый путь JDK в Инструменты-> Параметры->Xamarin-> Настройки Android, и он работает.
Я исправил эту проблему, удалив выходной файл и снова выполнив команду. Оказывается, он НЕ перезаписывает предыдущий файл. У меня возникла эта проблема при обновлении сертификата Давайте зашифровать с помощью Tomcat
[root@localhost Certificate]# openssl pkcs12 -export -in
/opt/Certificate/115c99f4c5aa98f5.crt -inkey /opt/Certificate/ravi.in.key -certfile
/opt/Certificate/gd_bundle-g2-g1.crt -out RaviNew.p12
Enter Export Password: <Password>
Verifying - Enter Export Password: <Password>
Примечание:- Выше Export Pasworrd запишите куда угодно, потому что это необходимо для создания файла JKS (это зависит от вашего выбора, какой пароль вы хотите сделать)
keytool -importkeystore -srckeystore DigiEduNew.p12 -srcstoretype pkcs12 -destkeystore finaldigiEdu.jks -deststoretype JKS
Importing keystore DigiEduNew.p12 to finaldigiEdu.jks...
Enter destination keystore password: <Any Password >
Re-enter new password: <Any Password >
Enter source keystore password: <.P12 Password >
Entry for alias 1 successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or
cancelled
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12
which is an industry standard format using "keytool -importkeystore -srckeystore
finaldigiEdu.jks -destkeystore finaldigiEdu.jks -deststoretype pkcs12".
у вас есть два варианта:
cmd не показывает пароль на экране во время ввода
, поэтому просто введите правильный пароль и будьте осторожны, а затем нажмите клавишу ввода.
Или просто используйте:
keytool -list -keystore 'keystoreName' -storepass 'type your keystore passwd'
и для получения полной информации о ключах добавьте
-v
:
keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'
ошибка ключевого инструмента: java.io.IOException: подделка хранилища ключей или неверный пароль
Я решил свою проблему, когда изменил путь хранилища ключей C:\MyWorks\mykeystore на C:\MyWorks\mykeystore.keystore.
Этот ответ полезен для тех, кто управляет несколькими хранилищами ключей в разных проектах.
У меня была такая же ошибка, и я заметил, что использую файл с паролем другогоkeystore.jks
который выдает это исключение, поскольку пароль не совпадает.
В моем случае был еще одинupload-keystore.jks
файл в том месте, где я запускал код. Это было исправлено, когда я удалил его и снова запустил код.
Если у вас уже есть
.store
файл, вы должны использовать тот же пароль, что и для его создания. Итак, в моем случае решение было:
rm *.store
rm *.cer
Это может показаться вам странным, но я просто пытаюсь узнать о
keytool
и я являюсь источником, контролирующим мои обучающие файлы и перезапускающим их позже!
Только что обновили до Android Studio 4.2 с 4.0. По-видимому, Android Studio незаметно ИЗМЕНИЛА мой пароль хранилища ключей, который оставался неизменным и отлично работал без происшествий более года.
Просто пришлось заново сдавать оба пароля.
Вздох