Hva er JKS-filformatet?
En .jks-fil er en Java KeyStore - en proprietær binær beholder som lagrer kryptografiske private nøkler og X.509-sertifikater for bruk i Java-applikasjoner. Formatet ble introdusert av Sun Microsystems som en del av Java Cryptography Architecture (JCA) på slutten av 1990-tallet og vedlikeholdes i dag av Oracle.
Hver .jks-fil starter med det 4-byte lange magiske tallet 0xFEEDFEED, etterfulgt av et versjonsfelt (vanligvis 0x00000002). Filen bruker «big-endian» og inneholder to oppføringstyper: KeyEntry-poster, som inneholder en kryptert privat nøkkel pluss dens sertifikatkjede, og TrustedCertEntry-poster, som lagrer sertifikater uten kryptering. En keyed SHA-1-sjekksum på slutten beskytter integriteten - et feil passord eller endringer i filen utløser den kjente feilmeldingen *«keystore was tampered with, or password was incorrect»*.
Private nøkler er beskyttet av et proprietært passordbasert krypteringsskjema (PBE) bygget på SHA-1, som anses som svakt etter moderne standarder. .jks-formatet er kun for Java og kan ikke leses av verktøy som OpenSSL, som forventer PKCS#12 eller PEM i stedet.
Siden JDK 9 (2017) har Oracle faset ut .jks til fordel for .p12 / .pfx, som ble den nye standardtypen for nøkkellagre. keytool gir nå en migreringsadvarsel hver gang et JKS-lager åpnes. JDK-systemets klarerte lager cacerts har historisk sett blitt levert som en .jks-fil. Den relaterte .jceks-varianten (magisk tall 0xCECECECE) tilbyr sterkere Triple-DES-nøkkelbeskyttelse, men forblir like Java-spesifikk.
Sikkerhet og trygghet
RISIKO: MEDIUMEn JKS-fil er inerte data (ingen kjørbar kode), men det er et HEMMELIG lager: det inneholder vanligvis private nøkler der eksponering kompromitterer en servers identitet eller en apps signeringsnøkkel. Behandle den som en passordfil - legg den aldri i et offentlig depot, begrens filtilganger, og bruk et sterkt passord. Formatets kryptering er svak etter moderne standarder, så en lekket .jks med et dårlig passord kan knekkes; dette er ytterligere en grunn til å migrere til PKCS#12 og rotere nøkler hvis et nøkkellager blir eksponert. Filer som utgir seg for å være nøkkellagre fra upålitelige kilder bør ikke brukes som ditt klarerte lager.
Formatdetaljer
i et nøtteskall- Star Wars Jedi Knight lagret spill - Enkelte LucasArts/Raven Star Wars Jedi Knight-titler brukte .jks for lagrede spill; lastes inne i spillet, urelatert til Java-nøkkellagre.
Programmer som åpner JKS-filer
Tekniske detaljer
dyp spesifikasjon| Magiske bytes | 0xFEEDFEED (FE ED FE ED) ved filstart; identifiserer filen som JKS for verktøy og validatorer |
| Versjonsfelt | 4-byte big-endian heltall ved posisjon 4; verdi 1 eller 2 (versjon 2 er gjeldende) |
| Byterekkefølge | Big-endian gjennom hele den binære strukturen |
| Kryptering av privat nøkkel | Proprietært PBE-skjema som bruker SHA-1 som nøkkelavledningsprimitiv; anses som kryptografisk svakt etter moderne standarder |
| Sertifikatlagring | TrustedCertEntry-poster inneholder X.509 DER-kodede sertifikater i klartekst - ingen kryptering per sertifikat |
| Integritetsbeskyttelse | Keyed SHA-1-sjekksum over hele lagerets innhold, avledet fra lagerpassordet; oppdager både manipulering og feil passord |
| Oppføringstyper | To typer: KeyEntry (kryptert privat nøkkel + sertifikatkjede) og TrustedCertEntry (rent sertifikat) |
| Adressering av oppføringer | Hver oppføring identifiseres av et unikt streng-alias; aliaser er uavhengige av store/små bokstaver i et lager |
| MIME-type | application/x-java-keystore (Java-spesifikk); faller tilbake til application/octet-stream for generell håndtering |
| Typisk filstørrelse | 1 KB - 50 KB for noen få nøkler og sertifikater; opptil flere MB for store trust-lagre som cacerts |
| Primært administrasjonsverktøy | JDK «keytool» kommandolinjeverktøy; grafisk alternativ er KeyStore Explorer |
| Plattformomfang | Portabel på tvers av alle operativsystemer med JRE eller JDK, men formatet er Java-spesifikt og ikke interoperabelt med OpenSSL eller andre ikke-Java PKI-verktøy |
| Status for utfasing | Faset ut av Oracle siden JDK 9 (2017); PKCS#12 er nå standard nøkkellagertype og «keytool» advarer ved hver JKS-fil som åpnes |
| Sterkere Sun-variant | JCEKS (magisk tall 0xCECECECE) - en Sun-utvidelse med Triple-DES nøkkelinnpakning; fortsatt kun for Java |
| Systemets klarerte lager | JDK-filen «cacerts» som følger med hver JRE har historisk sett vært et JKS-nøkkellager med hundrevis av rot-CA-sertifikater |
| Utgitt | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Siste versjon | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Spesifikasjon | docs.oracle.com |
JKS-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om JKS-filer.