Co to jest format pliku JKS?
Plik .jks to Java KeyStore - zastrzeżony kontener binarny przechowujący kryptograficzne klucze prywatne i certyfikaty X.509 do użytku przez aplikacje Java. Format został wprowadzony przez Sun Microsystems jako część Java Cryptography Architecture (JCA) pod koniec lat 90. i jest obecnie utrzymywany przez Oracle.
Każdy plik .jks zaczyna się od 4-bajtowej magicznej liczby 0xFEEDFEED, po której następuje pole wersji (zazwyczaj 0x00000002). Plik wykorzystuje kolejność bajtów big-endian i zawiera dwa typy wpisów: rekordy KeyEntry, zawierające zaszyfrowany klucz prywatny wraz z jego łańcuchem certyfikatów, oraz rekordy TrustedCertEntry, które przechowują certyfikaty bez szyfrowania. Skrót SHA-1 z kluczem na końcu chroni integralność - błędne hasło lub jakakolwiek ingerencja wyzwala znany błąd *„keystore was tampered with, or password was incorrect”*.
Klucze prywatne są chronione przez zastrzeżony schemat szyfrowania oparty na haśle (PBE) zbudowany na SHA-1, który według nowoczesnych standardów jest uważany za słaby. Format .jks jest specyficzny dla środowiska Java i nie jest czytelny dla narzędzi takich jak OpenSSL, które zamiast tego oczekują formatów PKCS#12 lub PEM.
Od wersji JDK 9 (2017) Oracle wycofało wsparcie dla .jks na rzecz .p12 / .pfx, który stał się nowym domyślnym typem magazynu kluczy. Narzędzie keytool emituje teraz ostrzeżenie o migracji przy każdym otwarciu magazynu JKS. Systemowy magazyn zaufania JDK cacerts był historycznie dostarczany jako plik .jks. Powiązany wariant .jceks (magiczna liczba 0xCECECECE) oferuje silniejszą ochronę kluczy Triple-DES, ale pozostaje równie specyficzny dla Java.
Bezpieczeństwo
RYZYKO: MEDIUMPlik JKS to dane bierne (brak kodu wykonywalnego), ale jest to magazyn TAJEMNIC: powszechnie zawiera klucze prywatne, których ujawnienie kompromituje tożsamość serwera lub klucz podpisywania aplikacji. Traktuj go jak plik z hasłami - nigdy nie umieszczaj go w publicznych repozytoriach, ogranicz uprawnienia do pliku i używaj silnego hasła magazynu. Szyfrowanie formatu jest słabe według nowoczesnych standardów, więc wyciek pliku .jks ze słabym hasłem może zostać złamany metodą brute-force; jest to kolejny powód, aby przejść na PKCS#12 i rotować klucze, jeśli magazyn zostanie kiedykolwiek ujawniony. Plikom podającym się za magazyny kluczy z niezaufanych źródeł nie należy ufać jako własnym magazynom zaufania.
Szczegóły formatu
w pigułce- Zapis gry Star Wars Jedi Knight - Niektóre tytuły Star Wars Jedi Knight od LucasArts/Raven używały rozszerzenia .jks dla zapisów gier; ładowane wewnątrz gry, niepowiązane z magazynami kluczy Java.
Programy otwierające pliki JKS
Szczegóły techniczne
specyfikacja| Magiczne bajty | 0xFEEDFEED (FE ED FE ED) na początku pliku; identyfikuje plik jako JKS dla narzędzi i walidatorów |
| Pole wersji formatu | 4-bajtowa liczba całkowita big-endian pod przesunięciem 4; wartość 1 lub 2 (wersja 2 jest aktualna) |
| Kolejność bajtów | Big-endian w całej strukturze binarnej |
| Szyfrowanie klucza prywatnego | Zastrzeżony schemat PBE wykorzystujący SHA-1 jako prymityw wyprowadzania klucza; uważany za słaby kryptograficznie według nowoczesnych standardów |
| Przechowywanie certyfikatów | Rekordy TrustedCertEntry przechowują certyfikaty X.509 zakodowane w DER w formacie jawnym - brak szyfrowania poszczególnych certyfikatów |
| Ochrona integralności | Skrót SHA-1 z kluczem obejmujący całą zawartość magazynu, pochodzący z hasła magazynu; wykrywa zarówno manipulację, jak i błędne hasło |
| Typy wpisów | Dwa typy: KeyEntry (zaszyfrowany klucz prywatny + łańcuch certyfikatów) i TrustedCertEntry (sam certyfikat) |
| Adresowanie wpisów | Każdy wpis jest identyfikowany przez unikalny alias tekstowy; aliasy nie rozróżniają wielkości liter w obrębie magazynu |
| Typ MIME | application/x-java-keystore (specyficzny dla Java); powraca do application/octet-stream dla ogólnej obsługi |
| Typowy rozmiar pliku | 1 KB - 50 KB dla kilku kluczy i certyfikatów; do kilku MB dla dużych magazynów zaufania, takich jak cacerts |
| Główne narzędzie do zarządzania | Narzędzie wiersza poleceń „keytool” z JDK; graficzną alternatywą jest KeyStore Explorer |
| Zakres platformy | Przenośny między dowolnymi systemami operacyjnymi z JRE lub JDK, ale format jest specyficzny dla Java i nie jest interoperacyjny z OpenSSL ani innymi narzędziami PKI spoza ekosystemu Java |
| Status wycofania | Uznany za przestarzały przez Oracle od JDK 9 (2017); PKCS#12 jest teraz domyślnym typem magazynu kluczy, a „keytool” ostrzega przy każdym otwarciu magazynu JKS |
| Silniejszy wariant Sun | JCEKS (magiczna liczba 0xCECECECE) - rozszerzenie Sun z opakowywaniem kluczy Triple-DES; nadal tylko dla Java |
| Systemowy magazyn zaufania | Plik „cacerts” w JDK dostarczany z każdym JRE był historycznie magazynem JKS zawierającym setki certyfikatów głównych urzędów certyfikacji (Root CA) |
| Wydano | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Najnowsza wersja | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Specyfikacja | docs.oracle.com |
Konwersje JKS
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki JKS.