Разница между файлом .keystore и файлом .jks

227

Я пытался найти разницу между .keystoreфайлами и .jksфайлами, но не смог найти. Я знаю, jksчто для "хранилища ключей Java", и оба способа хранить пары ключ / значение.

Есть ли разница или предпочтение использовать один над другим?

juveria
источник

Ответы:

197

В конечном счете, .keystoreи .jksявляются только расширение файлов: это до вас , чтобы назвать файлы здраво. Некоторые приложения используют файл хранилища ключей, хранящийся в $HOME/.keystore: обычно подразумевается, что это файл JKS, поскольку JKS является типом хранилища ключей по умолчанию в поставщике безопасности Sun / Oracle Java . Не все используют .jksрасширение для файлов JKS, потому что оно подразумевается по умолчанию. Я бы порекомендовал использовать расширение, просто чтобы запомнить, какой тип указать (если вам нужно).

В Java слово keystore может иметь одно из следующих значений в зависимости от контекста:

Говоря о файле и хранилище, на самом деле это не хранилище для пар ключ / значение (для этого есть множество других форматов). Скорее, это контейнер для хранения криптографических ключей и сертификатов (я думаю, что некоторые из них также могут хранить пароли). Как правило, эти файлы зашифрованы и защищены паролем, чтобы эти данные не были доступны посторонним лицам.

Java использует свой KeyStoreкласс и связанный API для использования хранилища ключей ( независимо от того, основано оно на файлах или нет ). JKSявляется специфичным для Java форматом файла, но API также может использоваться с другими типами файлов, обычно PKCS # 12. Если вы хотите загрузить хранилище ключей, вы должны указать его тип хранилища ключей. Обычные расширения будут:

  • .jksдля типа "JKS",
  • .p12или .pfxдля типа "PKCS12"(имя спецификации - PKCS # 12, но #не используется в имени типа хранилища ключей Java).

Кроме того, BouncyCastle также предоставляет свои реализации, в частности BKS (обычно с использованием .bksрасширения), который часто используется для приложений Android.

Bruno
источник
Я могу подтвердить, что смена расширения с .jks на .keystore будет работать. Пожалуйста, сделайте резервную копию, прежде чем делать это!
BMaximus
77

Вы запутались в этом.

A keystore- это контейнер сертификатов, личных ключей и т. Д.

Существуют спецификации того, каким должен быть формат этого хранилища ключей, и преобладающим является # PKCS12.

JKS - это реализация хранилища ключей Java. Также есть БКС и т. Д.

Это все типы хранилищ ключей .

Итак, чтобы ответить на ваш вопрос:

Разница между файлами .keystore и файлами .jks

Здесь ничего нет. JKS - это файлы хранилища ключей. Между типами хранилищ ключей есть разница . Например JKSпротив#PKCS12

Кратил
источник
2
Я бы сказал, что преобладающим типом хранилища ключей является JKS, а не PKCS # 12, только потому, что слово «хранилище ключей» является частью терминологии Java и редко используется вне контекста Java. При этом файлы PKCS # 12 действительно довольно распространены (обычно .pfxили .p12).
Бруно
@ Бруно: Вы имеете в виду преобладающий тип в приложениях Java.
Cratylus
10
Нет, я имею в виду, что слово «хранилище ключей» в основном слово Java. Другие приложения / платформы редко называют место / файл, где хранятся ключи и сертификаты, «хранилищем ключей». Например, MS вызывает файлы PKCS # 12 «Обмен личной информацией». Другие имеют имена, такие как «цепочка ключей» (OSX), «база данных сертификатов» (NSS), «хранилище сертификатов», «кольца ключей», ..., для мест, где они хранят ключи и сертификаты, а не «хранилище ключей».
Бруно
3
@Bruno: Я вижу , что вы mean.Good point.I не думал об этом , как этого before.Thanks
Кратиле
3

Одна из причин выбора .keystore вместо .jks заключается в том, что Unity распознает первый, но не последний, когда вы перемещаетесь, чтобы выбрать файл хранилища ключей (Unity 2017.3, macOS).

AbePralle
источник