java.io.IOException: Ungültiges Keystore-Format

Lesezeit: 6 Minuten

Weiß jemand wie man das löst? Ich habe viele Dinge ausprobiert, aber nichts davon hat funktioniert.

Und wenn ich auf weitere Details klicke, bekomme ich das:

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)

  • Was genau versuchst du zu tun? Das Posten eines Beispielcodes wäre hilfreich.

    – Jonik

    27. Juni 2009 um 11:48 Uhr

  • Und bitte poste was du schon probiert hast?

    – akarnokd

    27. Juni 2009 um 12:26 Uhr

  • Es sieht nicht so aus, als hätte Tomi irgendeinen KeyStore-bezogenen Code geschrieben; dieser Stack ist einfach ein Applet für den Anfang. Es sieht so aus, als hätte der Klassenlader Probleme bei der Vorbereitung auf die Überprüfung von Applet-Signaturen.

    – Ericsson

    27. Juni 2009 um 17:16 Uhr

  • @Erickson: Ja. Jetzt sehe ich es auch. Aber ohne eine OP-Antwort können wir leider nicht weitermachen.

    – akarnokd

    27. Juni 2009 um 18:28 Uhr

  • Wie haben Sie die JKS-Datei generiert? Sehen Sie sich diesen Thread an: stackoverflow.com/a/59312913/7051466

    – Zak Aroui

    12. Dezember 2019 um 21:30 Uhr

Sie können die Datei während des Kopierens/Übertragens beschädigen.

Benutzt du Maven? Wenn Sie die Keystore-Datei mit „filter=true“ kopieren, können Sie die Datei beschädigen.

Bitte überprüfen Sie die Dateigröße.

  • Großartig! Ich habe mir wirklich geholfen. Könnten Sie bitte erläutern, warum der Filterparameter den Schlüsselspeicher beschädigt?

    – Dmitri

    30. Juli 2013 um 14:39 Uhr

  • in meinem Fall die maven-cargo-plugin Containerkonfiguration verwenden sollte <files><file>...</file></files> für Binärdateien, anstatt <configfiles><configfile>gem die maven:cargo-Dokumentation

    – krevelen

    13. März 2018 um 15:02 Uhr


Benutzeravatar von xiezefan
Xiezefan

Vielleicht kodiert Maven Ihren KeyStore, Sie können filtering=false setzen, um dieses Problem zu beheben.

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

  • Ich hatte unten in meinem Elternteil Pom. Das Markieren der Filterung als falsch löste das Problem. src/main/resources true

    – Sanjay Jain

    6. März 2020 um 6:45 Uhr


  • Danke, das hat bei mir funktioniert. Ich musste nach der Änderung erneut einen Maven-Build erstellen

    – Erstpostkommentator

    15. Juli 2021 um 10:39 Uhr


(Neu-)Installation des neuesten JDK (z Orakels) hat es für mich behoben.

Vor der Installation des neuesten JDK, als ich den folgenden Befehl in Terminal.app ausgeführt habe:

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

Es ergab sich:

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)

Führen Sie jedoch nach der Installation des neuesten Oracle JDK und dem Neustart von Terminal den folgenden Befehl aus:

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

Ergebnisse in:

Enter keystore password:  

Dies zeigt an, dass das Schlüsseltool auf dem Pfad auf den Schlüsselspeicher zugreifen kann.

  • Das hat bei mir funktioniert – ich habe nur die neueste Version installiert, die der Mac bereits als Patch oder so “aktualisiert” hatte – aber erst, als ich ein neues Terminalfenster gestartet habe, hat der Pfad das neue Java-Update verwendet. Besonders nützlich waren die Befehle, die den Fehler replizierten und zeigten, dass das Problem behoben wurde (obwohl diese aufgrund der $(java_home)-Referenz im Terminal funktionierten, wo der gradle-Befehl nicht funktionierte, was etwas verwirrend war)!

    – android.weasel

    25. Oktober 2016 um 22:42 Uhr


  • Dieser Befehl hat mir geholfen, die jks-Datei zu validieren (keytool -list -keystore )

    – SudoPlz

    28. April 2020 um 20:21 Uhr

  • Dies funktionierte nach der Installation des neuesten JDK !!

    – Petrus

    13. Juni 2022 um 7:16 Uhr

Benutzeravatar von Shoaeb
Schoaeb

Ich hatte das gleiche Problem mit verschiedenen Versionen von keytool:

C:\Programme\Java\jdk1.8.0_51\bin\keytool

aber die gleiche Keystore-Datei funktionierte gut mit

“C:\Programme\Java\jre1.8.0_201\bin\keytool”

Ich weiß, es ist ein alter Thread, aber ich habe viele Stunden damit verbracht, das herauszufinden … : D

Ich hatte viel Zeit damit verbracht und endlich funktionierte das für mich –

Gehen Sie zu Datei -> Projektstruktur -> SDK-Speicherort -> Gradle-Einstellungen -> Gradle-JDK ändern -> von 1.8 auf 11

Geben Sie hier die Bildbeschreibung ein

Ändern Sie einfach Gradle JDK -> von 1.8 auf 11, erstellen Sie das Projekt neu und versuchen Sie es erneut

  • Danke! Das Aktualisieren von Gradle JDK auf 11 hat bei mir funktioniert

    – Harschal Pudale

    26. November 2022 um 13:34 Uhr

Benutzeravatar von Fariba
Fariba

Bei mir ist dieses Problem aufgetreten, weil ich eine .jks-Datei auf meinem Laptop mit 1.8.0_251 generiert und auf den Server mit Java 1.8.0_45 kopiert habe und als ich diese .jks-Datei in meinem Code verwendet habe, habe ich java.io.IOException: Invalid erhalten Keystore-Format.

Um dieses Problem zu lösen, habe ich eine .jks-Datei direkt auf dem Server generiert, anstatt sie von meinem Laptop mit einer anderen Java-Version zu kopieren.

  • Danke! Das Aktualisieren von Gradle JDK auf 11 hat bei mir funktioniert

    – Harschal Pudale

    26. November 2022 um 13:34 Uhr

Ich denke, die Keystore-Datei, die Sie verwenden möchten, hat ein anderes oder nicht unterstütztes Format in Bezug auf Ihre Java-Version. Könntest du mehr Infos zu deiner Aufgabe posten?

Im Allgemeinen müssen Sie zur Lösung dieses Problems möglicherweise den gesamten Schlüsselspeicher neu erstellen (z. B. mit einer anderen JDK-Version). Im Export-Import die Schlüssel zwischen dem alten und dem neuen – wenn Sie es schaffen, den alten woanders zu öffnen.

Wenn es sich einfach um eine nicht unterstützte Version handelt, versuchen Sie die Hüpfburg Kryptoanbieter zum Beispiel (obwohl ich nicht sicher bin, ob es Java für mehr Keystore-Typen unterstützt?).

Bearbeiten: Ich habe mir die Feature-Spezifikation von BC angesehen.

1449590cookie-checkjava.io.IOException: Ungültiges Keystore-Format

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy