Vad är filformatet JKS?
En .jks-fil är ett Java KeyStore - en proprietär binär behållare som lagrar kryptografiska privata nycklar och X.509-certifikat för användning i Java-applikationer. Formatet introducerades av Sun Microsystems som en del av Java Cryptography Architecture (JCA) i slutet av 1990-talet och underhålls idag av Oracle.
Varje .jks-fil börjar med det 4 byte långa magiska numret 0xFEEDFEED, följt av ett versionsfält (vanligtvis 0x00000002). Filen använder big-endian och innehåller två typer av poster: KeyEntry-poster, som innehåller en krypterad privat nyckel plus dess certifikatkedja, och TrustedCertEntry-poster, som lagrar certifikat utan kryptering. En nycklad SHA-1-kontrollsumma i slutet skyddar integriteten - ett felaktigt lösenord eller manipulation utlöser det bekanta felet *„keystore was tampered with, or password was incorrect”*.
Privata nycklar skyddas av ett proprietärt lösenordsbaserat krypteringsschema (PBE) byggt på SHA-1, vilket anses svagt enligt moderna standarder. .jks-formatet är specifikt för Java och kan inte läsas av verktyg som OpenSSL, som istället förväntar sig PKCS#12 eller PEM.
Sedan JDK 9 (2017) har Oracle fasat ut .jks till förmån för .p12 / .pfx, som blev den nya standardtypen för keystores. keytool visar nu en migreringsvarning varje gång ett JKS-lager öppnas. JDK:s systemförtroendelager cacerts har historiskt levererats som en .jks-fil. Den relaterade varianten .jceks (magiskt nummer 0xCECECECE) erbjuder starkare Triple-DES-nyckelskydd men förblir lika Java-specifik.
Säkerhet & trygghet
RISK: MEDIUMEn JKS-fil är inert data (ingen exekverbar kod), men det är ett HEMLIGT lager: det innehåller vanligtvis privata nycklar vars exponering äventyrar en servers identitet eller en apps signeringsnyckel. Hantera den som en lösenordsfil - checka aldrig in den i ett publikt arkiv, begränsa filbehörigheter och använd ett starkt lösenord. Formatets kryptering är svag enligt moderna standarder, så en läckt .jks med ett svagt lösenord kan knäckas med brute-force; detta är ytterligare ett skäl att migrera till PKCS#12 och att rotera nycklar om en keystore någonsin exponeras. Filer som utger sig för att vara keystores från otillförlitliga källor bör inte användas som ditt förtroendelager.
Formatdetaljer
i ett nötskal- Star Wars Jedi Knight sparfil - Vissa LucasArts/Raven Star Wars Jedi Knight-titlar använde .jks för sparade spel; laddas inuti spelet, orelaterat till Java-keystores.
Program som öppnar JKS-filer
-importcert / -genkeypair för att ändra. keytool. keytool. -importcert / -genkeypair för att ändra. keytool. -importcert / -genkeypair för att ändra. keytool. Tekniska detaljer
djup specifikation| Magic bytes | 0xFEEDFEED (FE ED FE ED) vid filoffset 0; identifierar filen som JKS för verktyg och validerare |
| Formatets versionsfält | 4-byte big-endian heltal vid offset 4; värde 1 eller 2 (version 2 är aktuell) |
| Byteordning | Big-endian genom hela den binära strukturen |
| Kryptering av privat nyckel | Proprietärt PBE-schema som använder SHA-1 som nyckel-härledningsprimitiv; anses kryptografiskt svagt enligt moderna standarder |
| Certifikatlagring | TrustedCertEntry-poster innehåller X.509 DER-kodade certifikat i klartext - ingen kryptering per certifikat |
| Integritetsskydd | Nycklad SHA-1-kontrollsumma över hela lagrets innehåll, härledd från lösenordet; upptäcker både manipulation och felaktigt lösenord |
| Posttyper | Två typer: KeyEntry (krypterad privat nyckel + certifikatkedja) och TrustedCertEntry (enbart certifikat) |
| Adressering av poster | Varje post identifieras av ett unikt strängalias; alias är skiftlägesoberoende inom ett lager |
| MIME-typ | application/x-java-keystore (Java-specifik); faller tillbaka på application/octet-stream för generisk hantering |
| Typisk filstorlek | 1 KB - 50 KB för ett fåtal nycklar och certifikat; upp till flera MB för stora förtroendelager som cacerts |
| Primärt hanteringsverktyg | Kommandoradsverktyget JDK keytool; grafiskt alternativ är KeyStore Explorer |
| Plattformens omfattning | Portabel över alla operativsystem med JRE eller JDK, men formatet är Java-specifikt och inte kompatibelt med OpenSSL eller andra icke-Java PKI-verktyg |
| Status för utfasning | Utfasad av Oracle sedan JDK 9 (2017); PKCS#12 är nu standardtyp för keystores och keytool varnar vid varje JKS-lager som öppnas |
| Starkare Sun-variant | JCEKS (magiskt nummer 0xCECECECE) - en Sun-utökning med Triple-DES-nyckelskydd; fortfarande endast för Java |
| Systemets förtroendelager | JDK-filen cacerts som levereras med varje JRE har historiskt varit en JKS-keystore som innehåller hundratals rot-CA-certifikat |
| Släppt | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Senaste version | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Specifikation | docs.oracle.com |
JKS-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om JKS-filer.
Vanliga frågor
Vad är en .jks-fil?
keytool och öppnas inte som ett vanligt dokument.Hur öppnar jag en JKS-fil?
keytool via kommandoraden („keytool -list -v -keystore fil.jks”) eller ett gratis GUI som KeyStore Explorer. Du måste känna till keystore-lösenordet - det finns inget sätt att läsa nycklarna utan det.Hur konverterar jag JKS till PKCS12 (.p12/.pfx)?
keytool -importkeystore -srckeystore in.jks -srcstoretype JKS -destkeystore ut.p12 -deststoretype PKCS12. PKCS#12 är den moderna standarden för flera verktyg och JDK-standard sedan Java 9.Varför säger keytool „keystore was tampered with, or password was incorrect”?
Är JKS föråldrat?
keytool PKCS#12 som standard och varnar för att JKS använder ett proprietärt, svagare format. Befintliga JKS-filer fungerar fortfarande, men nya keystores och migreringar bör använda PKCS#12.