błąd keytool Błąd w pliku kluczy lub hasło było niepoprawne


191

Podczas generowania certyfikatów na moim komputerze lokalnym pojawia się błąd.

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

Myślę, że są pewne problemy w wersji jdk. Uruchomiłem to samo polecenie na mojej maszynie kolegi i działa dobrze.

Udostępnij swoje dane wejściowe.


1
podajesz poprawne hasło? i uruchomienie polecenia z właściwego katalogu?
dev2d

1
Tworząc je, wpisuję nowe hasło. Z którego katalogu mam je uruchomić?
C4CodeE4Exe

keytool -genkeypair -alias tomcat -keyalg RSA -keystore D: \ keystore.jks spróbuj tego do generowania magazynu kluczy, a następnie wyeksportuj cer jak keytool -export -alias mycert -keystore D: \ keystore.jks -file vorburger.cer
dev2d

Czy możesz wyjaśnić, czy będzie to miało taki sam efekt, jak w przypadku „keytool -genkey -alias tomcat -keyalg RSA”.
C4CodeE4Exe

czy możesz mi powiedzieć, jaki jest cel wygenerowania tego cer?
dev2d

Odpowiedzi:


89

Z twojego opisu zakładam, że jesteś na komputerze z systemem Windows, a twoim domem jest abc

Więc teraz: Przyczyna

Po uruchomieniu tego polecenia

keytool -genkey -alias tomcat -keyalg RSA

ponieważ nie określasz jawnego magazynu kluczy, spróbuje on wygenerować (i w twoim przypadku, gdy otrzymujesz wyjątek, aby zaktualizować) magazyn kluczy C:\users\abc>.keystorei oczywiście musisz podać stare hasło do .keystore, podczas gdy uważam, że udostępniasz swoją wersję ( nowy).

Rozwiązanie

  1. Albo usuń .keystore z C:\users\abc>lokalizacji i wypróbuj polecenie

  2. lub spróbuj wykonać następujące polecenie, które utworzy nowy xyzkeystore:

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

Uwaga: -genkey jest już stary, ale raczej -genkeypairdziała, ale oba działają jednakowo.


Chociaż sam to wymyśliłem. „Usuń plik .keystore z lokalizacji C: \ users \ abc> i wypróbuj polecenie” to właściwe rozwiązanie.
C4CodeE4Exe

czy w argumentach można podać hasło do magazynu kluczy?
user1767754,

2
Usunąłem istniejący plik kluczy, a następnie wykonałem polecenie keytool -genkey -alias key0-keyalg RSA, a następnie pyta mnie o nowe hasło i inne dane, które podałem. Ale wciąż teraz, gdy próbuję zbudować podpisany apk, wyświetla ten sam komunikat o błędzie - „Zmodyfikowano plik kluczy lub hasło było niepoprawne”. W czym problem?

266

Rozwiązałem go, używając domyślnego hasła do magazynu kluczy cacerts: 'changeit'


haha .. tak właściwie to nie zmienia hasła na nowe, i domyślna praca: D
Muhammad Suleman

dzięki :) .. zadziałało na moim końcu .. i używałem hasła, którego użyłem do wyeksportowania pliku .cer ..
Danyal Sandeelo

Pracował dla mnie. Dzięki!
colefner

157

Ta odpowiedź będzie przydatna dla nowego użytkownika komputera Mac (działa również w systemie Linux, Windows 7 64-bitowy).

Puste hasło działało na moim komputerze Mac. (wklej poniższy wiersz w terminalu)

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

kiedy pojawi się monit

Enter keystore password:  

wystarczy nacisnąć przycisk Enter (nic nie wpisuj). Powinno działać.

Upewnij się, że jest to debug.keystore plik domyślny , a nie plik magazynu kluczy oparty na projekcie (w tym celu hasło może ulec zmianie).

Działa również dobrze w systemie MacOS Sierra 10.10+.

Słyszałem, że działa również w środowisku Linux. nie testowałem tego jeszcze w systemie Linux.


1
Dzięki. Działa w moim systemie Windows 10 do magazynu kluczy debugowania
Vinayak Singh

11

Ważne jest także użycie zmiany dla hasła.

To polecenie w końcu zadziałało dla mnie (z pomostem):

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

11

W tomcat 8.5 zwróć uwagę na poprawną nazwę atrybutów. To jest mój kod na 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>

Możesz odwiedzić https://tomcat.apache.org/tomcat-8.5-doc/config/http.html, aby zobaczyć wszystkie atrybuty


1
Dziękujemy za wskazanie, skąd pochodzi hasło! :)
N00b Pr0grammer



4

Działa w systemie Windows

otwórz wiersz polecenia (naciśnij klawisz Windows + R, a następnie wpisz „cmd” bez cudzysłowów w wyświetlonym oknie dialogowym, a następnie naciśnij klawisz Enter).

następnie wpisz sniff kodu poniżej:

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

następnie wpisz następujące polecenie

  1. keytool -list -keystore "C: / Documents and Settings / Your Name / .android / debug.keystore"

Następnie poprosi o hasło do magazynu kluczy. Domyślne hasło to „android” i wpisz lub po prostu naciśnij „DONT TYPE ANY PASSWORD”.


3

Sprawdź swój folder domowy ~/.gradle/gradle.properties. Czasami, jeśli masz gradle.propertiesw katalogu domowym, pobiera stamtąd szczegóły. Możesz to zmienić lub usunąć pliki. Następnie pobierze wymagane informacje z lokalnego folderu.


1

Jeśli pracujesz nad podpisaniem aplikacji Flutter, postępując zgodnie z tym przewodnikiem Zbuduj i wypuść aplikację na Androida i uruchom ten błąd. Mam nadzieję, że ta odpowiedź ci pomoże.

W moim przypadku zmieniłem ścieżkę do przechowywania pliku key.jks. Stało się tak, ponieważ w tej ścieżce istniał plik.

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

To polecenie przechowuje plik key.jks w katalogu domowym. Aby zapisać go w innym miejscu, zmień przekazany argument na parametr -keystore.

W moim przypadku,

keytool -genkey -v -keystore /Users/Y/Desktop/X/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyYour

tj. X - nazwa użytkownika i Y - nazwa folderu

Następnie zostaniesz poproszony o Wprowadź hasło magazynu kluczy: i Ponownie wprowadź nowe hasło: . Tutaj możesz użyć dowolnego hasła.

Zachowaj jednak prywatność pliku kluczy; nie zaznaczaj tego w publicznej kontroli źródła!


0

Podsumowując porady z tej strony, skończyłem z następującymi:

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

Potem otrzymałem zestaw pytań dotyczących nazwy, organizacji, lokalizacji i hasła do mojego aliasu.


0

błąd keytool: java.io.IOException: Zmodyfikowano plik kluczy lub hasło było niepoprawne

Rozwiązałem problem, gdy zmieniłem ścieżkę do magazynu kluczy C: \ MyWorks \ mykeystore na C: \ MyWorks \ mykeystore.keystore .


1
pierwsza ścieżka „C: \ MyWorks \ mykeystore” nie jest plikiem kluczy.
Jorgesys,


0

Rozwiązałem ten problem, usuwając plik wyjściowy i ponownie uruchamiając polecenie. Okazuje się, że NIE zastępuje poprzedniego pliku. Miałem ten problem podczas odnawiania certyfikatu Let's Encrypt za pomocą 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>

Uwaga: - Powyżej Eksportuj Pasworrd zapisz gdziekolwiek, ponieważ musisz utworzyć plik JKS (to zależy od twojego wyboru, jakie hasło chcesz utworzyć)

  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

Dla mnie rozwiązałem to, zmieniając hasła z litery arabskiej na literę angielską, ale najpierw poszedłem do folderu i usunąłem wygenerowany klucz, a potem działa.


0

W moim przypadku z Xamarin Forms 4.7 i Visual Studio 2019 16.7.0 Preview 3.1 problemem był niedopasowanie wersji ostatnio zaktualizowanych narzędzi do budowania Androida (apksigner) i JDK. Zaktualizowałem JDK do najnowszej wersji i wskazałem nową ścieżkę JDK na Narzędzia-> Opcje-> Xamarin-> Ustawienia Androida i działa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.