Android keystore a cessé de fonctionner

tout récemment, j'ai eu un problème avec un magasin de clés. Je sais qu'il y a déjà beaucoup de questions sur ce problème. Je les ai tous lus et googlé furieusement.

erreur:

keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772)
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
    at java.security.KeyStore.load(KeyStore.java:1214)
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:885)
    at sun.security.tools.KeyTool.run(KeyTool.java:340)
    at sun.security.tools.KeyTool.main(KeyTool.java:333)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:770)
    ... 5 more

logiciel que j'utilise:

Java

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

Eclipse

Version: 3.8.0
Build id: I20120502-2000

dernier Plugin ADT

dernier SDK Android

Voici ce que je sais:

  • je n'ai pas perdu le mot de passe et il n'a jamais changé.
  • Je ne peux pas récupérer le mot de passe(je connais le pass).
  • Je ne peux pas signer une application existante avec une clé différente sans publier une toute nouvelle application(donc je ne peux pas publier de mises à jour).

voici ce que j'ai fait:

  • j'ai désinstallé et ré-installé Eclipse de nombreuses fois.
  • j'ai désinstallé et réinstallé le plugin android ADT.
  • j'ai retiré et re-téléchargé le dernier SDK Android plusieurs fois.
  • j'ai désinstallé et réinstallé JDK7.
  • j'ai essayé d'utiliser les sauvegardes de mon keystore.
  • j'ai vérifié les checksums MD5 en utilisant "md5sum KEYSTORE" et comparé avec les sauvegardes (même sortie MD5-pas falsifié).
  • j'ai essayé la brute-forçant le magasin de clé(j'ai récupéré le mot de passe que je savais).
  • j'ai créé une clé de test(avec la configuration actuelle) et j'ai testé le mot de passe et il semble fonctionner correctement(donc quelque chose a changé).
  • j'ai essayé d'exporter l'android .apk manuellement, puis essayé de le signer(en dehors de L'éclipse).

Voici comment j'exporte une demande signée:

  • Par le biais de l'Éclipse: l'Exportation de l'aide de la commande Fichier > exporter > Exporter l'Application Android.
  • avant JDK7: jarsigner-verbose-keystore KEYSTORE FILE ALIAS.
  • With JDK7: jarsigner-verbose-sigalg MD5withRSA-digestalg SHA1-keystore KEYSTORE FILE ALIAS.

Que reste-t-il à découvrir ou à essayer?

  • certaines des références/URLs disent de supprimer le " de confiance.le dossier des certs?
  • essayez de supprimer le" debug.keystore"?
  • est-ce que la mise à jour D'Eclipse ou de L'un des outils de développement Android affecterait mon keystore?
  • est-ce que la mise à jour de Java de jdk6 à jdk7 créerait des problèmes?
  • est-ce que cela aurait pu modifier le fonctionnement du jarsigner?

suggestions de L'utilisateur:

  • essayez D'utiliser JDK6, mais j'ai pu récemment exporter une application.
  • clé cochée.stocker.mot de passe ou une clé.alias.mot de passe dans mon local.propriétés
  • en Décochant la construire automatiquement dans eclipse et nettoyer votre projet
  • essayez de supprimer .dossier de métadonnées dans votre espace de travail et effacer tous les dossiers temporaires.

résumé

  • fichiers de clés n'a pas changé,
  • j'ai les mots de passe des keystores,
  • j'ai récemment exporté avec succès une application en utilisant:
    • Eclipse 3.8 (et Eclipse 4,0+),
    • Dernière Version De Java 7,
    • dernier Plugin ADT.
  • ma dernière exportation et construction réussie remonte à quelques semaines avec Eclipse 3.8, Les derniers outils Android et Java 7 avec le même mot de passe.

mise à Jour (6/29/14)

  • j'ai utilisé: keytool-list-keystore KEYSTORE pour prouver et montrer avec succès que 3 de mes 4 touches de travail.
  • Je bruteforced la dernière clé et obtenu le mot de passe de la keystore(le pass que je connaissais déjà), mais le mot de passe ne fonctionne pas quand je rentre pour la signature. J'ai utilisé: java-jar AndroidKeystoreBrute_v1.02.jar - m 3-K KEYSTORE-d WORDLIST .
  • assez étrangement, parfois quand je tape mon mot de passe dans eclipse très rapidement, mon alias va apparaître et je peux exporter avec succès de ma demande. (Je sais c'est dingue).
  • mise à jour de la version Java.

si je tape le mot de passe très rapidement, il fonctionne parfois.

il semble que l'ouverture D'Eclipse et l'entrée du mot de passe la première fois me permet d'utiliser le keystore.

évidemment, si tout le reste échoue, je devrai créer un nouveau magasin de clés. Je voudrais vraiment obtenir ce résolues, je ne suis pas sûr que faire maintenant à part republier avec une nouvelle clé.

si la clé ne peut pas être récupérée correctement, je pourrais l'ouvrir sur Github.


Solution (6/29/14):

un merci spécial à L'utilisateur Erhannis!

voici ce que j'ai fait:

la commande se trompait sur moi à chaque fois:

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v

depuis que tu m'as dit que nous pourrions extraire privé les clés du Keystore Java(.jks), j'ai creusé plus profondément et j'ai fini par utiliser une variante de la commande. J'ai suivi les liens que vous avez posté ici et ici :

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -deststoretype pkcs12

après avoir extrait la clé privée et l'avoir stockée sous PKCS12, je pense que j'ai extrait ma clé privée et je l'ai remise dans un tout nouveau clavier Java:

keytool -importkeystore -srckeystore new.keystore -srcstoretype pkcs12 -destkeystore final.keystore -deststoretype jks

références:

http://developer.android.com/tools/publishing/app-signing.html#signapp

http://code.google.com/p/android-keystore-password-recover /

liste des URLs StackOverflow que j'ai lu:

Comment gérer la perte d'un mot de passe du fichier de clés dans Android?

problème de Keystore invalide?

Android: j'ai perdu mon Android key store, Que dois-je faire?

j'ai perdu mon .fichier de magasin de clés?

a oublié le mot de passe de Keystore, en pensant à la détection de la force Brute. il va corrompre le fichier de clés?

j'ai perdu le mot de passe pour android Keystore fichier

Problème de l'exécution de mon signé, communiqué de fichier de clés dans Eclipse

Android-mot de passe keystore oublié. Puis-je déchiffrer le fichier keystore?

Android release keystore question: "Keystore a été altéré, ou mot de passe était incorrect"

50
demandé sur Jared Burrows 2012-11-24 00:35:33

8 réponses

j'ai peut-être eu le même problème. Je n'ai jamais compris pourquoi il a échoué (bien que je me demande si c'était parce que le mot de passe de keystore était plus petit que 6 chiffres), mais j'ai été en mesure de copier ma clé dans un nouveau keystore, que j'ai ensuite renommé pour remplacer l'ancien, et il a mystérieusement fonctionné après cela (en utilisant les nouveaux mots de passe). J'avais besoin du mot de passe clé, au fait. Au travail https://security.stackexchange.com/a/3795 , j'ai fait ce qui suit:

  1. keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v
  2. entré deux fois le nouveau mot de passe de keystore
  3. Hit Entrée quand il m'a demandé pour la source de mot de passe du fichier de clés (laissé en blanc)
  4. entré le mot de passe clé

Après avoir vérifié que le nouveau travaillé, j'ai juste copié sur l'ancien. Espérons que cela fonctionne pour vous, bonne chance.

5
répondu Erhannis 2017-03-17 13:14:46

essayez de supprimer .metadata dossier dans votre espace de travail et effacer tous les dossiers temporaires. Si votre fichier keystore n'est pas endommagé et que vous avez essayé de réinstaller Eclipse, ADT, SDK Android et SDK Java correctement, Je ne vois pas d'autres causes possibles pour cet étrange problème à l'exclusion .des fichiers de cache de métadonnées et / ou une corruption temporaire.

une autre suggestion

Essayez d'utiliser Portecle un utilitaire pour gérer et examiner les keystores, les clés, les certificats, les demandes de certificats, les listes de révocation de certificats, etc.

3
répondu Silverstorm 2012-12-30 03:50:05

j'ai eu le même problème et j'ai essayé tout ce qui est suggéré dans ce thread mais rien n'a été capable de sauver mon mot de passe d'alias. Le fait est que j'étais absolument sûr au sujet du mot de passe, puisque j'avais mis à jour l'application quatre fois déjà. J'ai fait le "fichier de clés a été falsifié, ou mot de passe incorrect" message.

la solution

il semble qu'à la création du keystore en utilisant eclipse, un caractère d'espace a été ajouté devant le mot de passe!

ce méchant bug a été apparemment corrigé à une version ultérieure me rendant incapable de signer mon application avec le mot de passe que je pensais être le bon.

basé sur ce lien SO: Ant ne parvient pas à construire signé apk après la mise à jour à android v20 je suggérerais que vous essayer d'ajouter un caractère d'espace avant de après votre mot de passe .

2
répondu Gerhat 2017-05-23 11:55:13

je vous suggérerai quelques essais.

Avoir de la patience pour appliquer ces,

Suit:

  1. déroulez le build automatiquement (Project-> Build automatiquement) dans eclipse et nettoyez votre projet.
  2. construisez-le à nouveau.(Clic droit sur le projet+construire le projet)
  3. Projet D'Exportation
  4. .
  5. Sélectionnez Android Export.(auto-alignés pour vous)
  6. choisissez votre clé. fournir le mot de passe. alias devrait figurer dans la liste.(Assurez-vous du verrouillage du capuchon). Parfois nous donnons le mot de passe correct mais en raison de caps il échoue toujours;)
  7. dites-moi si ça vous convient.

espère que cela vous aidera.

1
répondu Ajay Kumar Meher 2012-12-27 13:01:07

est-ce que vous stockez des valeurs telles que key.stocker.mot de passe ou une clé.alias.le mot de passe dans votre local.fichier de propriétés? Sont une de ces incorrect?

je suis curieux s'il y a un bug qui se produit pour les clés créées avec JDK6 et vérifiées dans JDK7 - cela expliquerait pourquoi les nouvelles clés que vous avez créées pour tester fonctionnent, mais pas l'ancienne. Essayez de rétrograder à JDK6 et voir si cela corrige - d'autres ont eu des problèmes jarsigner dans JDK7 qui sont partis quand ils ont rétrogradé à 6. Si cela fonctionne, produisez un rapport de bogue et exigez un correctif pour que vous puissiez passer en toute sécurité à Java 7:)

0
répondu Alexander Lucas 2012-12-10 19:59:02

j'ai combattu cette question aussi bien récemment, et essayé toutes les suggestions énumérées ici et ailleurs. Finalement identifié une erreur stupide qui a été à l'origine de cette erreur à ma fin - je voulais partager ceci ici au cas où il aide l'un d'entre vous.

il est plus probable que ce soit le cas si vous, comme moi, avez plusieurs versions Java sur votre machine et avez mis à jour JRE / JDK entre le moment où vous avez créé le keystore à l'origine et maintenant lorsque vous essayez de signer L'APK.

pour une raison quelconque, nos instructions de compilation faisaient référence au chemin Java complet comme ceci:

C:\Progra ~ 1 \ Java\jdk1.6.0_45\bin\jarsigner-verbose-sigalg SHA1withRSA-digestalg SHA1-keystore cre80ve.fichier de clés non signé.apk cre80ve

L'une des suggestions ci-dessus m'a fait penser qu'il ne s'agissait peut-être pas du tout d'un problème de mot de passe, et qu'il pourrait s'agir d'incompatibilités de version à l'origine du problème. J'ai donc lancé la commande suivante :

keytool-list-keystore cre80ve.keystore

en utilisant le mot de passe que je savais correct, et voici, il a confirmé que c'était le bon mot de passe.

j'ai ensuite supprimé la référence explicite dans le chemin vers la version Java (plus ancienne). Cela lui a fait automatiquement ramasser la dernière version de Java (jdk1.8.0_31 dans mon cas):

jarsigner-verbose-sigalg SHA1withRSA-digestalg SHA1-keystore cre80ve.fichier de clés non signé.apk cre80ve

et tout a commencé à bien fonctionner!

la ligne de Fond: il ne peut pas être un mot de passe de problème, mais les différentes versions de Java ou le SDK Android à l'origine du problème, donc n'oubliez pas de vérifier cela.

et une fois qu'il commence à fonctionner, n'oubliez pas de sauvegarder votre keystore et mot de passe dans un endroit sûr: -)

0
répondu Nik Sanghvi 2015-08-07 18:13:01

mon pseudonyme s'est arrêté. (Ok, après quelques mises à jour D'Android Studio et Java).

j'ai essayé toutes les solutions de ce fil ainsi que d'autres. Dans mon cas, la solution était surprenante. J'ai la clé de voûte avec quelques alias. Aucun ne fonctionnait sauf un, qui avait le même mot de passe que keystore. Mais malheureusement, ce n'était pas celui dont j'avais besoin. Cela m'a fait penser à aucune logique. J'ai copié single alias sur New keystore avec

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -srcalias importantalias

et puis j'ai changé le mot de passe d'alias au même que le mot de passe de keystore avec:

keytool -keypasswd -keystore new.keystore -alias importantalias

finalement j'ai pu signer mon apk. Il ressemble à un insecte stupide qui peut gaspiller une journée de développement.

0
répondu Malak Pete 2015-11-08 21:53:56

vient D'avoir ce problème-tout d'un coup Android Studio oublié mes mots de passe et ne voulait pas utiliser ceux que j'avais dans le fichier gradle. J'ai le même fichier-clé et les mêmes mots de passe dans le même projet depuis 6 ans!

donc je les ai entrés manuellement - mais cela a échoué temps après temps de vérification. J'ai essayé des choses comme invalider les caches, redémarrer Android Studio et restaurer une sauvegarde du keystore mais rien n'a aidé.

enfin à l'état pur désespoir j'ai essayé d'échanger le mot de passe de keystore et le mot de passe de clé. Et voilà, ça marchait! Il s'avère que j'avais changé les mots de passe quand je les ai entrés dans le fichier de construction de Gradle il y a quelques années, et pour une raison quelconque je n'ai jamais remarqué.

Conclusion: ne jamais être sûr à 100% que vous le faites bien.

0
répondu BadCash 2018-05-26 00:05:39