web-dev-qa-db-fra.com

java.io.IOException: format de magasin de clés non valide

Quelqu'un sait-il comment résoudre ceci? J'ai essayé beaucoup de choses, mais aucune n'a fonctionné.

Et quand je clique sur plus de détails, j'obtiens ceci:

at Sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
atsun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
at Java.security.KeyStore.load(Unknown Source)
at com.Sun.deploy.security.RootCertStore$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at com.Sun.deploy.security.RootCertStore.loadCertStore(Unknown Source)
at com.Sun.deploy.security.RootCertStore.load(Unknown Source)
at com.Sun.deploy.security.RootCertStore.load(Unknown Source)
at com.Sun.deploy.security.ImmutableCertStore.load(Unknown Source)
at com.Sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
at com.Sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
at Sun.plugin.security.PluginClassLoader.getPermissions(Unknown Source)
at Java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.access$000(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Sun.applet.AppletClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.applet.AppletClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.applet.AppletClassLoader.loadCode(Unknown Source)
at Sun.applet.AppletPanel.createApplet(Unknown Source)
at Sun.plugin.AppletViewer.createApplet(Unknown Source)
at Sun.applet.AppletPanel.runLoader(Unknown Source)
at Sun.applet.AppletPanel.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
33
Tomi

Vous pouvez corrompre le fichier pendant la copie/le transfert.

Utilisez-vous maven? Si vous copiez un fichier de clés avec "filter = true", vous pouvez corrompre le fichier.

Veuillez vérifier la taille du fichier.

76
Kurtulus Oksuztepe

Peut-être que maven vous a encodé KeyStore, vous pouvez définir filtering = false pour résoudre le problème.

<build>
    ...
    <resources>
        <resource>
            ...
            <!-- set filtering=false to fix -->
            <filtering>false</filtering>
            ...
        </resource>
    </resources>
</build>
26
xiezefan

(Ré) installer le dernier JDK (par exemple Oracle's ) l'a corrigé pour moi.

Avant d'installer le dernier JDK, lorsque j'ai exécuté la commande suivante dans Terminal.app:

keytool -list -keystore $(/usr/libexec/Java_home)/jre/lib/security/cacerts -v

Il en est résulté:

keytool error: Java.io.IOException: Invalid keystore format
Java.io.IOException: Invalid keystore format
    at Sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.Java:650)
    at Sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.Java:55)
    at Java.security.KeyStore.load(KeyStore.Java:1445)
    at Sun.security.tools.keytool.Main.doCommands(Main.Java:792)
    at Sun.security.tools.keytool.Main.run(Main.Java:340)
    at Sun.security.tools.keytool.Main.main(Main.Java:333)

Mais, après avoir installé le dernier Oracle JDK et redémarré Terminal, exécutez la commande suivante:

keytool -list -keystore $(/usr/libexec/Java_home)/jre/lib/security/cacerts -v

Résulte en:

Enter keystore password:  

Ce qui indique que le keytool sur le chemin peut accéder au magasin de clés.

13
Gary S. Weaver

Je pense que le fichier de clés que vous souhaitez utiliser a un format différent ou non pris en charge par rapport à votre Java. Pourriez-vous publier plus d'informations sur votre tâche?

En général, pour résoudre ce problème, vous devrez peut-être recréer l'intégralité du fichier de clés (en utilisant une autre version JDK par exemple). En export-importez les clés entre l'ancienne et la nouvelle - si vous parvenez à ouvrir l'ancienne ailleurs.

S'il s'agit simplement d'une version non prise en charge, essayez le fournisseur de cryptage BouncyCastle par exemple (bien que je ne sois pas sûr si cela ajoute un support à Java pour plus de types de keystore?).

Edit: J'ai regardé les caractéristiques de BC.

4
akarnokd

Votre magasin de clés est cassé et vous devrez le restaurer ou le régénérer.

J'ai rencontré le problème avec openJDK sur Ubuntu, j'ai dû installer Oracle JDK pour le faire fonctionner.

Vous pouvez suivre cela guide sur les sites google pour ce faire.

2
Sadiq Ali

allez construire propre le projet puis reconstruisez votre projet ça a marché pour moi.

0
ultimate