Was ist das JKS-Dateiformat?
Eine .jks-Datei ist ein Java KeyStore - ein proprietärer Binärcontainer, der kryptografische private Schlüssel und X.509-Zertifikate zur Verwendung durch Java-Anwendungen speichert. Das Format wurde Ende der 1990er Jahre von Sun Microsystems als Teil der Java Cryptography Architecture (JCA) eingeführt und wird heute von Oracle gepflegt.
Jede .jks-Datei beginnt mit der 4-Byte-Magic-Number 0xFEEDFEED, gefolgt von einem Versionsfeld (typischerweise 0x00000002). Die Datei ist im Big-Endian-Format gespeichert und enthält zwei Eintragstypen: KeyEntry-Datensätze, die einen verschlüsselten privaten Schlüssel nebst Zertifikatskette enthalten, und TrustedCertEntry-Datensätze, die Zertifikate ohne Verschlüsselung speichern. Ein Keyed-SHA-1-Digest am Ende schützt die Integrität - ein falsches Passwort oder jegliche Manipulation löst die bekannte Fehlermeldung „keystore was tampered with, or password was incorrect“ aus.
Private Schlüssel werden durch ein proprietäres, passwortbasiertes Verschlüsselungsverfahren (PBE) auf Basis von SHA-1 geschützt, das nach modernen Standards als schwach gilt. Das .jks-Format ist Java-spezifisch und kann nicht von Tools wie OpenSSL gelesen werden, die stattdessen PKCS#12 oder PEM erwarten.
Seit JDK 9 (2017) hat Oracle .jks zugunsten von .p12 / .pfx als veraltet markiert, welches zum neuen Standard-Keystore-Typ wurde. keytool gibt nun bei jedem Öffnen eines JKS-Speichers eine Migrationswarnung aus. Der System-Trust-Store des JDK, cacerts, wurde historisch als .jks-Datei ausgeliefert. Die verwandte .jceks-Variante (Magic 0xCECECECE) bietet einen stärkeren Triple-DES-Schlüsselschutz, bleibt aber gleichermaßen Java-spezifisch.
Sicherheit
RISIKO: MEDIUMEine JKS-Datei besteht aus inerten Daten (kein ausführbarer Code), ist aber ein GEHEIMER Speicher: Sie enthält üblicherweise private Schlüssel, deren Offenlegung die Identität eines Servers oder den Signierschlüssel einer App gefährdet. Behandeln Sie sie wie eine Passwortdatei - niemals in ein öffentliches Repository einchecken, Dateiberechtigungen einschränken und ein starkes Keystore-Passwort verwenden. Die Verschlüsselung des Formats ist nach modernen Standards schwach, daher kann eine geleakte .jks mit schwachem Passwort per Brute-Force geknackt werden; dies ist ein weiterer Grund für die Migration zu PKCS#12 und den Austausch von Schlüsseln, falls ein Keystore jemals exponiert wurde. Dateien aus nicht vertrauenswürdigen Quellen, die behaupten, Keystores zu sein, sollten nicht als Trust-Store übernommen werden.
Formatdetails
kurz gefasst- Star Wars Jedi Knight Spielstand - Einige LucasArts/Raven Star Wars Jedi Knight Titel verwendeten .jks für Spielstände; diese werden im Spiel geladen und stehen in keinem Zusammenhang mit Java-Keystores.
Programme zum Öffnen von JKS-Dateien
-importcert / -genkeypair zum Ändern. keytool-Syntax auswendig lernen zu müssen. keytool. -importcert / -genkeypair zum Ändern. keytool-Syntax auswendig lernen zu müssen. -importcert / -genkeypair zum Ändern. keytool-Syntax auswendig lernen zu müssen. Technische Details
technische Spezifikation| Magic Bytes | 0xFEEDFEED (FE ED FE ED) am Dateianfang; identifiziert die Datei gegenüber Tools und Validatoren als JKS |
| Format-Versionsfeld | 4-Byte Big-Endian-Integer bei Offset 4; Wert 1 oder 2 (Version 2 ist aktuell) |
| Byte-Reihenfolge | Durchgehend Big-Endian in der gesamten Binärstruktur |
| Verschlüsselung privater Schlüssel | Proprietäres PBE-Schema unter Verwendung von SHA-1 als Schlüsselableitungsfunktion; gilt nach modernen Standards als kryptografisch schwach |
| Zertifikatsspeicherung | TrustedCertEntry-Datensätze enthalten X.509 DER-kodierte Zertifikate im Klartext - keine Verschlüsselung pro Zertifikat |
| Integritätsschutz | Keyed-SHA-1-Digest über den gesamten Speicherinhalt, abgeleitet vom Keystore-Passwort; erkennt sowohl Manipulationen als auch falsche Passwörter |
| Eintragstypen | Zwei Typen: KeyEntry (verschlüsselter privater Schlüssel + Zertifikatskette) und TrustedCertEntry (reines Zertifikat) |
| Adressierung der Einträge | Jeder Eintrag wird durch einen eindeutigen String-Alias identifiziert; Aliase unterscheiden innerhalb eines Speichers nicht zwischen Groß- und Kleinschreibung |
| MIME-Typ | application/x-java-keystore (Java-spezifisch); fällt für generische Verarbeitung auf application/octet-stream zurück |
| Typische Dateigröße | 1 KB - 50 KB für einige Schlüssel und Zertifikate; bis zu mehreren MB für große Trust-Stores wie cacerts |
| Primäres Verwaltungstool | JDK keytool Kommandozeilenprogramm; grafische Alternative ist KeyStore Explorer |
| Plattformreichweite | Portabel über jedes Betriebssystem mit einer JRE oder einem JDK, aber das Format ist Java-spezifisch und nicht interoperabel mit OpenSSL oder anderen Nicht-Java-PKI-Tools |
| Veraltungsstatus | Von Oracle seit JDK 9 (2017) als veraltet markiert; PKCS#12 ist jetzt der Standard-Keystore-Typ und keytool warnt bei jedem geöffneten JKS-Speicher |
| Stärkere Sun-Variante | JCEKS (Magic 0xCECECECE) - eine Sun-Erweiterung mit Triple-DES-Schlüsselkapselung; ebenfalls Java-spezifisch |
| System-Trust-Store | Die mit jeder JRE ausgelieferte JDK-Datei cacerts war historisch ein JKS-Keystore, der hunderte von Root-CA-Zertifikaten enthält |
| Veröffentlicht | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Neueste Version | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Spezifikation | docs.oracle.com |
JKS-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu JKS-Dateien.
Häufig gestellte Fragen
Was ist eine .jks-Datei?
keytool des JDK verwaltet und nicht als normales Dokument geöffnet.Wie öffne ich eine JKS-Datei?
Wie konvertiere ich JKS in PKCS12 (.p12/.pfx)?
keytool -importkeystore -srckeystore in.jks -srcstoretype JKS -destkeystore out.p12 -deststoretype PKCS12. PKCS#12 ist der moderne, toolübergreifende Standard und seit Java 9 der JDK-Standard.Warum meldet keytool „keystore was tampered with, or password was incorrect“?
Ist JKS veraltet?
keytool standardmäßig PKCS#12 und warnt davor, dass JKS ein proprietäres, schwächeres Format nutzt. Bestehende JKS-Dateien funktionieren weiterhin, aber für neue Keystores und Migrationen sollte PKCS#12 verwendet werden.