54 votes

Android fichier de clés cessé de fonctionner

Tout récemment, j'ai eu un problème avec une clé de stockage. Je sais qu'il ya beaucoup de questions à propos de ce problème, déjà. J'ai tout lu 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

Le logiciel que je suis en utilisant:

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

Dernière Plugin ADT

Le dernier Android SDK

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 sais que le pass).
  • Je ne peut pas se connecter à une application existante avec une clé différente, sans relâcher une nouvelle application(Donc je ne peux pas publier les mises à jour).

Voici ce que j'ai fait:

  • Je l'ai désinstallé et ré-installé Eclipse de nombreuses fois.
  • Je l'ai désinstallé et ré-installé l'android plugin ADT.
  • J'ai supprimé et re-téléchargé les derniers SDK Android à de nombreuses reprises.
  • Je l'ai désinstallé et ré-installé JDK7.
  • J'ai essayé d'utiliser les sauvegardes de mon fichier de clés.
  • J'ai vérifié le MD5 de contrôle à l'aide de "md5sum du fichier de clés" et comparaison avec les sauvegardes(même MD5 sortie - non altéré).
  • J'ai essayé de brute-forcer le magasin de clés(j'ai récupéré le mot de passe que je connaissais).
  • J'ai créé une clé de test(avec le réglage actuel) et testé le mot de passe et il semble bien fonctionné(si quelque chose a changé).
  • J'ai essayé d'exporter le android .apk manuellement et ensuite essayé de le signer(en Dehors d'Eclipse).

Voici comment je l'exportation d'une application 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 FICHIER de magasin de clés ALIAS.
  • Avec JDK7: jarsigner -verbose-sigalg MD5withRSA -digestalg SHA1 -keystore FICHIER de magasin de clés ALIAS.

Qu'est ce qu'il y a à gauche de la figure ou essayer?

  • Certaines des références/Url dire de retirer la confiance.certs" fichier?
  • Essayez de supprimer le "debug.keystore"?
  • Serait la mise à jour d'Eclipse ou de l'une de Android outils de développement affecter mon fichier de clés?
  • Serait la mise à jour de Java à partir de jdk6 à jdk7 créer des problèmes?
  • Cela pourrait-il avoir gâché avec ou modifier la façon dont le jarsigner œuvres de toute façon?

Suggestions des utilisateurs:

  • Essayez d'utiliser JDK6, mais j'ai pu récemment à l'exportation d'une application.
  • Vérifié la clé.magasin.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 le nettoyage de votre projet
  • Essayez de supprimer .dossier de métadonnées dans votre espace de travail et d'effacer tous les dossiers temp.

Résumé

  • Fichier de stockage des clés n'a pas changé,
  • J'ai les mots de passe pour le fichier de stockage des clés,
  • J'ai exporté avec succès une application récemment utilisée:
    • Eclipse 3.8 (et Eclipse 4.0+),
    • Dernière Version De Java 7,
    • Dernière Plugin ADT.
  • Mon dernier succès de l'exportation et de construire était il y a quelques semaines à l'aide d'Eclipse 3.8, le dernier Android outils et Java 7 avec le même mot de passe.

Mise à jour (6/29/14)

  • J'ai utilisé: keytool -list -keystore fichier de stockage des clés pour réussir à prouver et à démontrer que 3 de mes 4 touches de travail.
  • Je bruteforced la dernière touche et obtenu le mot de passe du fichier de clés(passer, je le savais déjà), mais le mot de passe ne fonctionne pas quand je rentre à la signature. J'ai utilisé: java-jar AndroidKeystoreBrute_v1.02.jar -m 3 -k KEYSTORE -d LISTE de mots.
  • Assez étrangement, parfois, quand je tape mon mot de passe dans l'éclipse très vite, mon alias va se montrer et je peux exporter mon application. (Je sais c'est dingue).
  • Mise à jour de version de Java.

Si je tape le mot de passe très vite, il fonctionne, parfois.

Il semble que l'ouverture de l'Éclipse et en entrant le mot de passe la première fois, me permet d'utiliser le fichier de clés.

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

Si la clé ne peut pas être récupéré correctement, je pourrais open source sur Github.


Solution (6/29/14):

Un merci spécial à l'utilisateur Erhannis!

Voici ce que j'ai fait:

La commande d'erreur sur moi à chaque fois:

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

Depuis que vous m'avez dit que nous pourrions extraire des clés privées de l'Keystore Java(.jks), j'ai creusé plus profondément et s'est terminé vers le haut en utilisant 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 l'extraction de la clé privée et le stockage sous forme de PKCS12, je pense que l'extrait ma clé privée et le mettre dans un tout nouveau Keystore 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 de StackOverflow Url j'ai lu:

S'il vous plaît Conseils Nécessaires, Perdu le mot de passe du fichier de clés

Non valide du fichier de clés problème?

Android: j'ai perdu mon android magasin de clés, que dois-je faire?

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

Oublié le mot de passe du fichier de clés, la pensée de la Force Brute de détection. il va corrompre le fichier de clés?

J'ai perdu le mot de passe pour android fichier de magasin de clés

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

Android - avez Oublié le mot de passe du fichier de clés. Je peux déchiffrer fichier de magasin de clés?

Android version keystore question: "fichier de clés a été falsifié, ou mot de passe incorrect"

8voto

Erhannis Points 1850

J'ai peut-être eu le même problème. Je n'ai jamais fait comprendre pourquoi il n'était pas (bien que je me demande si c'est parce que le mot de passe du fichier de clés a été plus courte que 6 chiffres), mais j'ai été en mesure de copier ma clé dans un nouveau fichier de stockage des clés, que j'ai ensuite renommé pour remplacer l'ancien, et il mystérieusement travaillé par la suite (en utilisant le nouveau mot de passe). Besoin de la clé de mot de passe, par la manière. Travaillant à l'extérieur de http://security.stackexchange.com/a/3795j'ai fait la suivante:

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

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.

5voto

Gerhat Points 111

J'ai eu le même problème et j'ai essayé tout ce qui est proposé dans ce fil, mais rien n'a pu sauver mon alias mot de passe. Le point est que j'étais absolument sûr sur le mot de passe, puisque j'ai eu une mise à jour de l'app 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 que lors de la création du fichier de clés à l'aide d'eclipse, un espace a été ajouté à l'entrée du mot de passe!

Ce méchant bug a été apparemment résolu dans une version ultérieure m'a rendu incapable de signer mon application avec le mot de passe que je pensais être la bonne.

Basée sur ce lien: Ant ne parvient pas à construire signé apk après avoir mis à jour vers android v20 je suggère que vous essayez d'ajouter un caractère d'espace avant ou après votre mot de passe.

3voto

Silverstorm Points 2397

Essayez de supprimer .les métadonnées dossier dans votre espace de travail et d'effacer tous les dossiers temp. Si votre fichier de magasin de clés n'est pas endommagé et que vous avez essayé de réinstaller Eclipse ADT, SDK Android et Java SDK correctement, je ne vois pas d'autres, éventuellement, les causes de cette étrange question de l'exclusion .les métadonnées des fichiers de cache et\ou quelque temp la corruption.

Une autre suggestion

Essayez d'utiliser Portecle un utilitaire pour la gestion et l'examen de fichier de stockage des clés, des clés, des certificats, des demandes de certificat, listes de révocation de certificats, etc.

1voto

Ajay Kumar Meher Points 1109

Je propose de couple de plus de chaleur et d'essais.

Avoir de la patience pour appliquer ces,

Étapes:

  1. Décocher la génération automatique (Project-> Build Automatiquement) dans eclipse et le nettoyage de votre projet.
  2. Construire de nouveau.(Clic droit sur le projet+Projet de construction)
  3. Projet D'Exportation.
  4. Sélectionnez Android À L'Exportation.(auto-alignés pour vous)
  5. Choisissez votre clé. fournir le mot de passe. alias devrait venir dans la liste.(Assurez-vous de la touche caps lock). Parfois nous donner le mot de passe correct, mais en raison de chapeaux il échoue toujours ;)
  6. Laissez-moi savoir si cela fonctionne pour vous.

Espère que cela va vous aider.

0voto

Alexander Lucas Points 10258

Êtes-vous stocker des valeurs telles que la clé.magasin.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 de savoir si il y a certains bug qui se produit pour les touches créé avec JDK6 et vérifié dans JDK7 - Il expliquer pourquoi les nouvelles clés que vous avez créé pour l'essai, mais l'ancien ne fonctionne pas. Essayez la rétrogradation à la JDK6 et voir si cela résout-il - d'Autres ont eu des jarsigner de la difficulté à JDK7 qui s'en alla quand ils rétrogradé à 6. Si cela fonctionne, remplir un rapport de bogue et de la demande d'un patch de sorte que vous pouvez en toute sécurité de la mise à niveau vers Java 7 :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X