Hvad er JKS-filformatet?
En .jks-fil er en Java KeyStore - en proprietær binær container, der gemmer kryptografiske private nøgler og X.509-certifikater til brug for Java-applikationer. Formatet blev introduceret af Sun Microsystems som en del af Java Cryptography Architecture (JCA) i slutningen af 1990'erne og vedligeholdes i dag af Oracle.
Enhver .jks-fil starter med det 4-byte magiske nummer 0xFEEDFEED, efterfulgt af et versionsfelt (typisk 0x00000002). Filen er big-endian og indeholder to posttyper: KeyEntry-poster, der indeholder en krypteret privat nøgle plus dens certifikatkæde, og TrustedCertEntry-poster, som gemmer certifikater uden kryptering. Et keyed SHA-1-sammendrag (digest) til sidst beskytter integriteten - en forkert adgangskode eller enhver form for manipulation udløser den velkendte fejl: *„keystore was tampered with, or password was incorrect“*.
Private nøgler er beskyttet af et proprietært adgangskodebaseret krypteringsskema (PBE) bygget på SHA-1, hvilket anses for svagt efter moderne standarder. .jks-formatet er kun til Java og kan ikke læses af værktøjer som OpenSSL, der i stedet forventer PKCS#12 eller PEM.
Siden JDK 9 (2017) har Oracle udfaset .jks til fordel for .p12 / .pfx, som blev den nye standardtype for keystores. keytool udsender nu en migreringsadvarsel for hver JKS-store, den åbner. JDK's system-truststore cacerts er historisk set blevet leveret som en .jks-fil. Den relaterede .jceks-variant (magic 0xCECECECE) tilbyder stærkere Triple-DES-nøglebeskyttelse, men forbliver ligeså Java-specifik.
Sikkerhed og tryghed
RISIKO: MEDIUMEn JKS-fil er inerte data (ingen eksekverbar kode), men det er en HEMMELIG lagring: den indeholder typisk private nøgler, hvis eksponering kompromitterer en servers identitet eller en apps signeringsnøgle. Behandl den som en adgangskodefil - upload den aldrig til et offentligt depot, begræns filrettigheder og brug en stærk adgangskode. Formatets kryptering er svag efter moderne standarder, så en lækket .jks med en dårlig adgangskode kan brute-forces; dette er endnu en grund til at migrere til PKCS#12 og rotere nøgler, hvis en keystore nogensinde bliver eksponeret. Filer, der påstår at være keystores fra upålidelige kilder, bør ikke benyttes som din truststore.
Formatdetaljer
kort fortalt- Star Wars Jedi Knight gemt spil - Nogle LucasArts/Raven Star Wars Jedi Knight-titler brugte .jks til gemte spil; indlæses i spillet, ikke relateret til Java-keystores.
Programmer der åbner JKS-filer
-importcert / -genkeypair for at ændre. keytool-syntaks. keytool. -importcert / -genkeypair for at ændre. keytool-syntaks. -importcert / -genkeypair for at ændre. keytool-syntaks. Tekniske detaljer
dyb specifikation| Magic bytes | 0xFEEDFEED (FE ED FE ED) ved fil-offset 0; identificerer filen som JKS for værktøjer og validatorer |
| Formatversionsfelt | 4-byte big-endian heltal ved offset 4; værdi 1 eller 2 (version 2 er den nuværende) |
| Byte-orden | Big-endian gennem hele den binære struktur |
| Kryptering af private nøgler | Proprietært PBE-skema, der bruger SHA-1 som nøgleafledningsprimitiv; anses for kryptografisk svagt efter moderne standarder |
| Certifikatlagring | TrustedCertEntry-poster indeholder X.509 DER-kodede certifikater i klartekst - ingen kryptering pr. certifikat |
| Integritetsbeskyttelse | Keyed SHA-1-sammendrag over hele store-indholdet, afledt af store-adgangskoden; detekterer både manipulation og forkert adgangskode |
| Posttyper | To typer: KeyEntry (krypteret privat nøgle + certifikatkæde) og TrustedCertEntry (rent certifikat) |
| Adressering af poster | Hver post identificeres af et unikt streng-alias; aliasser er ikke case-sensitive inden for en store |
| MIME-type | application/x-java-keystore (Java-specifik); falder tilbage på application/octet-stream for generisk håndtering |
| Typisk filstørrelse | 1 KB - 50 KB for få nøgler og certifikater; op til flere MB for store trust-stores som cacerts |
| Primært administrationsværktøj | JDK keytool kommandolinjeværktøj; grafisk alternativ er KeyStore Explorer |
| Platformsomfang | Portabel på tværs af alle operativsystemer med en JRE eller JDK, men formatet er Java-specifikt og ikke interoperabelt med OpenSSL eller andre ikke-Java PKI-værktøjer |
| Udfasningsstatus | Udfaset af Oracle siden JDK 9 (2017); PKCS#12 er nu standardtypen for keystores, og keytool advarer ved hver åbnet JKS-store |
| Stærkere Sun-variant | JCEKS (magic 0xCECECECE) - en Sun-udvidelse med Triple-DES nøgleindpakning; stadig kun til Java |
| System-truststore | JDK cacerts-filen, der følger med enhver JRE, har historisk set været en JKS-keystore med hundredvis af rod-CA-certifikater |
| Udgivet | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Seneste version | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Specifikation | docs.oracle.com |
JKS-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om JKS-filer.
Ofte stillede spørgsmål
Hvad er en .jks-fil?
keytool og åbnes ikke som et almindeligt dokument.Hvordan åbner jeg en JKS-fil?
Hvordan konverterer jeg en JKS til PKCS12 (.p12/.pfx)?
keytool -importkeystore -srckeystore in.jks -srcstoretype JKS -destkeystore out.p12 -deststoretype PKCS12. PKCS#12 er den moderne standard på tværs af værktøjer og har været JDK-standard siden Java 9.Hvorfor siger keytool 'keystore was tampered with, or password was incorrect'?
Er JKS forældet?
keytool som standard PKCS#12 og advarer om, at JKS bruger et proprietært, svagere format. Eksisterende JKS-filer virker stadig, men nye keystores og migreringer bør bruge PKCS#12.