ошибка keytool. Подделка хранилища ключей или неверный пароль


192

Я получаю следующую ошибку при создании сертификатов на моей локальной машине.

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. Я выполнил ту же команду на моей машине коллег, и она работает нормально.

Пожалуйста, поделитесь своими мнениями.


1
вы даете правильный пароль? и запустить команду из правильного каталога?
dev2d

1
Когда я его создаю, я ввожу новый пароль. Из какого каталога я должен его запустить?
C4CodeE4Exe

keytool -genkeypair -alias tomcat -keyalg RSA -keystore D: \ keystore.jks попробуйте это сделать для создания хранилища ключей, а затем экспортируйте cer как keytool -export -alias mycert -keystore D: \ keystore.jks
-file

Не могли бы вы уточнить, будет ли это иметь тот же эффект, что был с "keytool -genkey -alias tomcat -keyalg RSA".
C4CodeE4Exe

Можете ли вы сказать мне цель создания этого сертификата?
dev2d

Ответы:


89

Из вашего описания я предполагаю, что вы находитесь на машине Windows, и ваш дом ABC

Так что теперь: причина

Когда вы запускаете эту команду

keytool -genkey -alias tomcat -keyalg RSA

поскольку вы не указываете явное хранилище ключей, оно будет пытаться сгенерировать (и в вашем случае, если вы получаете исключение, чтобы обновить) хранилище ключей, C:\users\abc>.keystoreи, конечно, вам необходимо предоставить старый пароль для .keystore, хотя я полагаю, что вы предоставляете свою версию ( новый).

Решение

  1. Либо удалите .keystoreиз C:\users\abc>местоположения и попробуйте команду

  2. или попробуйте следующую команду, которая создаст новое хранилище xyzkeystore:

    keytool -genkey -keystore xyzkeystore -alias tomcat -keyalg RSA

Примечание: -genkey сейчас старая версия, но лучше использовать -genkeypairобе эти функции одинаково.


Хотя я понял это по своему усмотрению. «Либо удалите .keystore из папки C: \ users \ abc> и попробуйте команду» - это правильное решение.
C4CodeE4Exe

возможно ли передать ключ хранилища в аргументах?
user1767754

2
Я удалил существующий файл хранилища ключей и затем выполнил команду keytool -genkey -alias key0-keyalg RSA, затем он запрашивает у меня новый пароль и другие данные, которые я дал. Но все же сейчас, когда я пытаюсь создать подписанный apk, он показывает то же сообщение об ошибке - «Подделка хранилища ключей или неверный пароль» В чем здесь проблема?

266

Я решил это, используя пароль по умолчанию для хранилища ключей cacerts: 'changeit'


хаха .. так что на самом деле это не смена пароля на новый, а работа по умолчанию: D
Мухаммед Сулеман

спасибо :) .. это сработало на моем конце ... и я использовал пароль, который я использовал для экспорта файла .cer ..
Даниал Сандиело

Работал на меня. Спасибо!
Colefner

158

Этот ответ будет полезен для нового пользователя Mac (работает для Linux, Windows 7 64 бит).

Пустой пароль работал на моем Mac. (вставьте следующую строку в терминал)

keytool -list -v -keystore ~/.android/debug.keystore

когда это подсказывает

Enter keystore password:  

просто нажмите кнопку ввода (ничего не печатать). Это должно работать.

Убедитесь, что это debug.keystore файл по умолчанию , а не файл хранилища ключей вашего проекта (пароль может измениться для этого).

Хорошо работает и для MacOS Sierra 10.10+.

Я слышал, это работает и для среды Linux. я еще не проверял это в Linux.


1
Спасибо. Он работал на моем Windows 10 для отладки хранилища ключей
Vinayak Singh

11

Использование changeit для пароля также важно.

Эта команда наконец-то сработала для меня (с пристани):

 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 360 -keysize 2048

11

В 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, чтобы увидеть все атрибуты.


1
Спасибо за указание, откуда пароль отсылается! :)
N00b Pr0grammer



4

Работает на Windows

откройте командную строку (нажмите клавишу Windows + R, затем введите «cmd» без кавычек в появившемся диалоговом окне и нажмите клавишу ввода).

затем введите код сниффа ниже:

  1. cd C: \ Program Files \ Java \ jdk1.7.0_25 \ bin

затем введите следующую команду

  1. keytool -list -keystore "C: / Documents and Settings / Ваше имя / .android / debug.keystore"

Затем он запросит пароль Keystore. Пароль по умолчанию - это тип «android», введите или просто нажмите «DONT TYPE ANY PASSWORD».


3

Проверьте вашу домашнюю папку ~/.gradle/gradle.properties. Иногда, если у вас есть gradle.propertiesв домашнем каталоге, он берет подробности оттуда. Либо вы можете изменить это или удалить файлы. Тогда он возьмет необходимые данные из вашей локальной папки.


1

Если вы работаете над подписью своего приложения 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

т.е. X - имя пользователя и Y - имя папки

Тогда вам будет предложено Введите пароль для хранилища ключей: и Повторно введите новый пароль . Здесь вы можете использовать любой пароль, который вы хотите.

Однако сохраняйте файл хранилища ключей закрытым; не проверяйте это в общедоступном контроле!


0

Обобщая советы с этой страницы, я закончил со следующим:

keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA

Затем я получил ряд вопросов, касающихся имени, организации, местоположения и пароля для моего псевдонима.


0

ошибка keytool: java.io.IOException: подделка хранилища ключей или неверный пароль

Я решил свою проблему, когда изменил путь хранилища ключей C: \ MyWorks \ mykeystore на C: \ MyWorks \ mykeystore.keystore .


1
первый путь "C: \ MyWorks \ mykeystore" не является хранилищем ключей.
Jorgesys


0

Я исправил эту проблему, удалив выходной файл и снова выполнив команду. Оказывается, он НЕ перезаписывает предыдущий файл. У меня возникла эта проблема при обновлении сертификата Давайте зашифровать с Tomcat


0
 [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".

0

Для меня я решил это, изменив пароли с арабской буквы на английскую букву, но сначала я пошел в папку и удалил сгенерированный ключ, затем он работает.


0

В моем случае с Xamarin Forms 4.7 и Visual Studio 2019 16.7.0 Preview 3.1 проблема заключалась в несовпадении версий недавно обновленных инструментов Android Build (apksigner) и JDK. Обновил JDK до последней и указал новый путь JDK в Сервис-> Параметры-> Xamarin-> Настройки Android, и это работает.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.