Keytool-Fehler Der Keystore wurde manipuliert oder das Passwort war falsch

191

Beim Generieren von Zertifikaten auf meinem lokalen Computer wird der folgende Fehler angezeigt.

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

Ich denke, es gibt einige Probleme in der JDK-Version. Ich habe den gleichen Befehl auf meinem Kollegen-Computer ausgeführt und er funktioniert einwandfrei.

Bitte teilen Sie Ihre Eingaben.

C4CodeE4Exe
quelle
1
gibst du das richtige Passwort? und den Befehl aus dem richtigen Verzeichnis ausführen?
Dev2d
1
Während ich es erstelle, gebe ich ein neues Passwort ein. Aus welchem ​​Verzeichnis soll ich es ausführen?
C4CodeE4Exe
keytool -genkeypair -alias tomcat -keyalg RSA -keystore D: \ keystore.jks Versuchen Sie dies, um einen Keystore zu generieren, und exportieren Sie dann cer wie keytool -export -alias mycert -keystore D: \ keystore.jks -file vorburger.cer
dev2d
Können Sie bitte klarstellen, ob es den gleichen Effekt hat wie bei "keytool -genkey -alias tomcat -keyalg RSA".
C4CodeE4Exe
Kannst du mir den Zweck der Erzeugung dieses Cer sagen?
Dev2d

Antworten:

89

Aus Ihrer Beschreibung gehe ich davon aus, dass Sie sich auf einer Windows-Maschine befinden und Ihr Zuhause abc ist

Also jetzt: Ursache

Wenn Sie diesen Befehl ausführen

keytool -genkey -alias tomcat -keyalg RSA

Da Sie keinen expliziten Keystore angeben, wird versucht, einen Keystore zu generieren (und in Ihrem Fall, wenn Sie eine Ausnahme erhalten, um ihn zu aktualisieren). C:\users\abc>.keystoreNatürlich müssen Sie ein altes Kennwort für .keystore angeben, während Sie meiner Meinung nach Ihre Version bereitstellen (a ein neues).

Lösung

  1. Entweder .keystorevom C:\users\abc>Speicherort löschen und den Befehl ausführen

  2. oder versuchen Sie den folgenden Befehl, der einen neuen xyzkeystore erstellt:

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

Hinweis: -genkey Ist jetzt alt, verwenden Sie lieber, -genkeypairobwohl beide Werke gleichermaßen funktionieren.

Kalher
quelle
Obwohl ich es selbst herausgefunden habe. "Löschen Sie entweder .keystore aus C: \ users \ abc> und versuchen Sie es mit dem Befehl" ist die richtige Lösung.
C4CodeE4Exe
Ist es möglich, den Keystore-Pass in den Argumenten zu liefern?
user1767754
2
Ich habe die vorhandene Keystore-Datei gelöscht und bin dann dem Befehl keytool -genkey -alias key0-keyalg RSA gefolgt. Dann werde ich nach einem neuen Passwort und anderen Daten gefragt, die ich angegeben habe. Aber immer noch, wenn ich versuche, eine signierte apk zu erstellen, wird dieselbe Fehlermeldung angezeigt: "Der Keystore wurde manipuliert oder das Passwort war falsch." Was ist das Problem hier?
265

Ich habe es mit dem Standardkennwort für den Cacerts-Keystore gelöst: 'changeit'

sarrdou
quelle
haha .. also eigentlich ist es nicht Passwort in neues zu ändern, und Standardarbeit: D
Muhammad Suleman
danke :) .. es hat an meinem Ende funktioniert..und ich habe das Passwort verwendet, mit dem ich die .cer-Datei exportiert habe ..
Danyal Sandeelo
Hat für mich gearbeitet. Vielen Dank!
Colefner
157

Diese Antwort ist hilfreich für neue Mac-Benutzer (funktioniert auch für Linux, Windows 7 64-Bit).

Das leere Passwort funktionierte auf meinem Mac. (Fügen Sie die folgende Zeile in Terminal ein)

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

wenn es dazu auffordert

Enter keystore password:  

Drücken Sie einfach die Eingabetaste (geben Sie nichts ein). Es sollte funktionieren.

Stellen Sie sicher, dass es sich um eine Standarddatei handelt debug.keystore , nicht um eine projektbasierte Keystore-Datei (das Kennwort kann sich hierfür ändern).

Funktioniert auch gut für MacOS Sierra 10.10+.

Ich habe gehört, es funktioniert auch für Linux-Umgebungen. Ich habe das noch nicht unter Linux getestet.

Zumry Mohamed
quelle
1
Vielen Dank. Es funktionierte unter Windows 10 für den Debug-Keystore
Vinayak Singh
11

Die Verwendung von changeit für das Passwort ist ebenfalls wichtig.

Dieser Befehl funktionierte schließlich für mich (mit Steg):

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

Achten Sie in Tomcat 8.5 darauf, den korrekten Namen der Attribute zu schreiben. Dies ist mein Code auf 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>

Sie können https://tomcat.apache.org/tomcat-8.5-doc/config/http.html besuchen , um alle Attribute anzuzeigen

Gopeca
quelle
1
Vielen Dank für den Hinweis, woher das Passwort stammt! :)
N00b Pr0grammer
7

Ich habe dieses Problem mit dem Standardkennwort " changeit " gelöst .

Tapas Talukder
quelle
4

Funktioniert unter Windows

Öffnen Sie die Eingabeaufforderung (drücken Sie Windows-Taste + R, geben Sie "cmd" ohne Anführungszeichen in das angezeigte Dialogfeld ein und drücken Sie die Eingabetaste).

Geben Sie dann den folgenden Code ein:

  1. CD C: \ Programme \ Java \ jdk1.7.0_25 \ bin

Geben Sie dann den folgenden Befehl ein

  1. keytool -list -keystore "C: / Dokumente und Einstellungen / Ihr Name / .android / debug.keystore"

Dann wird jetzt nach dem Keystore-Passwort gefragt. Das Standardkennwort ist "android" und geben Sie ein oder drücken Sie einfach die Eingabetaste "KEIN PASSWORT TYPEN".

Avinash Shinde
quelle
3

Überprüfen Sie Ihren Home-Ordner ~/.gradle/gradle.properties. Manchmal, wenn Sie gradle.propertiesim Home-Verzeichnis haben, nimmt es Details von dort. Entweder können Sie das ändern oder die Dateien löschen. Dann werden die erforderlichen Details aus Ihrem lokalen Ordner übernommen.

Ankit Sinha
quelle
0

Zusammenfassend habe ich die Ratschläge auf dieser Seite zusammengefasst und Folgendes festgestellt:

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

Dann bekam ich eine Reihe von Fragen zu Name, Organisation, Ort und Passwort für meinen Alias.

goRGon
quelle
0

Keytool-Fehler: java.io.IOException: Der Keystore wurde manipuliert oder das Passwort war falsch

Ich habe mein Problem gelöst, als ich den Schlüsselspeicherpfad C: \ MyWorks \ mykeystore in C: \ MyWorks \ mykeystore.keystore geändert habe .

CLIFFORD PY
quelle
1
Der erste Pfad "C: \ MyWorks \ mykeystore" ist kein Keystore.
Jorgesys
0

In meinem Fall musste ich rootZugang haben.

Alex Po
quelle
0

Ich habe dieses Problem behoben, indem ich die Ausgabedatei gelöscht und den Befehl erneut ausgeführt habe. Es stellt sich heraus, dass die vorherige Datei NICHT überschrieben wird. Ich hatte dieses Problem bei der Erneuerung eines Zertifikats mit Tomcat

gimp3695
quelle
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>

Hinweis: - Schreiben Sie über Export Pasworrd irgendwo hin, da eine JKS-Datei erstellt werden muss (es hängt von Ihrer Wahl ab, welches Kennwort Sie erstellen möchten).

  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".
Ravi Tyagi
quelle
0

Für mich habe ich es gelöst, indem ich Passwörter von arabischen Buchstaben in englische Buchstaben geändert habe, aber zuerst bin ich in den Ordner gegangen und habe den generierten Schlüssel gelöscht, dann funktioniert es.

Mohammed Salim
quelle
0

Wenn Sie daran arbeiten, Ihre Flutter-App anhand dieser Anleitung zu signieren, erstellen und veröffentlichen Sie eine Android-App und führen Sie diesen Fehler aus. Ich hoffe diese Antwort hilft dir.

In meinem Fall habe ich den Pfad zum Speichern meiner key.jks geändert. Dies ist mir passiert, weil in diesem Pfad eine Datei vorhanden war.

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

Dieser Befehl speichert die Datei key.jks in Ihrem Home-Verzeichnis. Um es an anderer Stelle zu speichern, ändern Sie das Argument, das Sie an den Parameter -keystore übergeben.

In meinem Fall,

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

dh X - Benutzername und Y - Ordnername

Anschließend werden Sie aufgefordert, das Keystore-Passwort einzugeben : und das neue Passwort erneut einzugeben: . Hier können Sie ein beliebiges Passwort verwenden.

Halten Sie die Keystore-Datei jedoch privat. Checken Sie es nicht in die öffentliche Quellcodeverwaltung ein!

Abel Tilahun
quelle
0

In meinem Fall mit Xamarin Forms 4.7 und Visual Studio 2019 16.7.0 Preview 3.1 war das Problem die Nichtübereinstimmung der Version der kürzlich aktualisierten Android Build-Tools (Apksigner) und JDK. JDK wurde auf den neuesten Stand gebracht und auf den neuen JDK-Pfad unter Extras-> Optionen-> Xamarin-> Android-Einstellungen verwiesen, und es funktioniert.

Mehmet AVŞAR
quelle