Różnica między plikiem .keystore a plikiem .jks

226

Próbowałem znaleźć różnicę między .keystoreplikami i .jksplikami, ale nie mogłem go znaleźć. Wiem, że jksjest dla „magazynu kluczy Java” i oba są sposobem na przechowywanie par klucz / wartość.

Czy jest jakaś różnica lub preferencja używania jednego nad drugim?

juveria
źródło

Odpowiedzi:

197

Ostatecznie .keystorei .jkssą tylko rozszerzeniami plików: od Ciebie zależy rozsądne nazewnictwo plików. Niektóre aplikacje używają pliku kluczy przechowywanego w $HOME/.keystore: zwykle implikuje to, że jest to plik JKS, ponieważ JKS jest domyślnym typem pliku kluczy w dostawcy bezpieczeństwa Sun / Oracle Java . Nie wszyscy używają .jksrozszerzenia dla plików JKS, ponieważ domyślnie jest to domyślna. Polecam użycie rozszerzenia, aby zapamiętać, który typ określić (jeśli potrzebujesz).

W Javie słowo keystore może mieć jedno z następujących znaczeń, w zależności od kontekstu:

Mówiąc o pliku i pamięci, tak naprawdę nie jest to pamięć dla par klucz / wartość (jest do tego mnóstwo lub inne formaty). Jest to raczej pojemnik do przechowywania kluczy kryptograficznych i certyfikatów (uważam, że niektóre z nich mogą również przechowywać hasła). Zasadniczo pliki te są szyfrowane i chronione hasłem, aby nie dopuścić do udostępnienia tych danych osobom nieupoważnionym.

Java używa swojej KeyStoreklasy i powiązanego interfejsu API do korzystania z magazynu kluczy ( niezależnie od tego, czy jest oparty na plikach, czy nie ). JKSjest formatem plików specyficznym dla języka Java, ale interfejs API może być również używany z innymi typami plików, zazwyczaj PKCS # 12. Jeśli chcesz załadować magazyn kluczy, musisz określić jego typ. Konwencjonalne rozszerzenia to:

  • .jksza typ "JKS",
  • .p12lub .pfxdla typu "PKCS12"(nazwa specyfikacji to PKCS # 12, ale #nie jest używana w nazwie typu magazynu kluczy Java).

Ponadto BouncyCastle zapewnia również swoje implementacje, w szczególności BKS (zwykle przy użyciu .bksrozszerzenia), który jest często używany w aplikacjach na Androida.

Bruno
źródło
Mogę potwierdzić, że zmiana rozszerzenia z .jks na .keystore będzie działać. Utwórz kopię zapasową przed zrobieniem tego !!
BMaximus,
77

Jesteś tym zdezorientowany.

A keystoreto kontener certyfikatów, kluczy prywatnych itp.

Istnieją specyfikacje formatu tego magazynu kluczy, a dominującym jest # PKCS12

JKS jest implementacją magazynu kluczy Java. Istnieje również BKS itp.

Są to wszystkie typy magazynów kluczy .

Aby odpowiedzieć na twoje pytanie:

różnica między plikami .keystore i .jks

Nie ma żadnego. JKS to pliki magazynu kluczy. Istnieje jednak różnica między typami magazynu kluczy . Np. JKSVs#PKCS12

Cratylus
źródło
2
Powiedziałbym, że dominującym typem magazynu kluczy jest JKS, a nie PKCS # 12, tylko dlatego, że słowo „keystore” jest częścią terminologii Java, rzadko używaną poza kontekstem Java. To powiedziawszy, pliki PKCS # 12 są rzeczywiście dość powszechne (zazwyczaj .pfxlub .p12).
Bruno
@Bruno: Masz na myśli dominujący typ aplikacji Java.
Cratylus
10
Nie, chodzi mi o to, że słowo „keystore” to przeważnie słowo Java. Inne aplikacje / platformy rzadko nazywają miejsce / plik, w którym klucze i certyfikaty przechowują „magazyn kluczy”. MS nazywa pliki PKCS # 12 na przykład plikami „wymiany informacji osobistych”. Inne mają nazwy takie jak „klucz łańcucha” (OSX), „baza danych certyfikatów” (NSS), „baza certyfikatów”, „klucze”,…, dla miejsc, w których przechowują klucze i certyfikaty, a nie „magazyn kluczy”.
Bruno
3
@Bruno: Rozumiem, co masz na myśli. Dobra uwaga. Nie myślałem o tym wcześniej. Dzięki
Cratylus
3

Jednym z powodów wyboru .keystore zamiast .jks jest to, że Unity rozpoznaje ten pierwszy, ale nie ten drugi, gdy nawigujesz, aby wybrać plik magazynu kluczy (Unity 2017.3, macOS).

AbePralle
źródło