java.io.IOException: le format de Keystore invalide

est ce que quelqu'un sait comment résoudre ce problème? 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.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.access0(Unknown Source)
at java.net.URLClassLoader.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)
20
demandé sur sstn 2009-06-27 15:43:47

6 réponses

vous pouvez corrompre le fichier pendant la copie/transfert.

utilisez-vous maven? Si vous copiez le fichier keystore avec "filter=true", vous pouvez corrompre le fichier.

veuillez vérifier la taille du fichier.

60
répondu Kurtulus Oksuztepe 2011-08-13 13:05:55

peut-être maven encoding vous KeyStore, vous pouvez définir filtrage=false pour corriger le problème.

<build>
    ...
    <resources>
        <resource>
            ...
            <!-- set filtering=false to fix -->
            <filtering>false</filtering>
            ...
        </resource>
    </resources>
</build>
16
répondu xiezefan 2016-03-08 07:58:13

(Ré)installation de la dernière version de JDK (par exemple, Oracle) réparé pour moi.

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

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

Ça a donné:

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émarrer le Terminal, exécuter la commande suivante:

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

résultat:

Enter keystore password:  

qui indique que le clavier sur le chemin peut accéder au fichier de stockage des clés.

7
répondu Gary S. Weaver 2016-01-05 21:39:13

je pense que le fichier keystore que vous voulez utiliser a un format différent ou non supporté par rapport à votre version Java. Pouvez-vous poster plus d'informations sur votre tâche?

en général, pour résoudre ce problème, vous pourriez avoir besoin de recréer l'ensemble du keystore (en utilisant une autre version de JDK par exemple). Dans export-importer les clés entre l'ancien et le nouveau - si vous parvenez à ouvrir l'ancien ailleurs.

si c'est simplement une version non supportée, essayez la BouncyCastle crypto fournisseur d'accès par exemple (bien que je ne sois pas sûr si cela ajoute du support à Java pour plus de types de keystore?).

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

4
répondu akarnokd 2009-06-27 11:56:46

votre clef de voûte est cassée, et vous devrez la restaurer ou la régénérer.

3
répondu Thorbjørn Ravn Andersen 2009-06-27 15:34:57

j'ai rencontré le problème avec openJDK sur ubuntu, installer Oracle JDK pour qu'il fonctionne.

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

2
répondu Sadiq Ali 2017-09-19 10:19:38