Типов несколько больше, чем указано в стандартном списке имен, с которым вы связались. Вы можете найти больше в документации провайдеров криптографии . Наиболее распространенными являются JKS
(по умолчанию) и PKCS12
(для файлов PKCS # 12, часто с расширением, .p12
а иногда и с расширением .pfx
).
JKS является наиболее распространенным, если вы остаетесь в мире Java. PKCS # 12 не зависит от Java, особенно удобно использовать сертификаты (с закрытыми ключами), резервные копии которых созданы из браузера или из инструментов на основе OpenSSL ( keytool
не удалось преобразовать хранилище ключей и импортировать его закрытые ключи до версии Java 6. , поэтому пришлось использовать другие инструменты).
Если у вас уже есть файл PKCS # 12, часто проще использовать этот PKCS12
тип напрямую. Можно конвертировать форматы, но это редко необходимо, если вы можете напрямую выбрать тип хранилища ключей.
В Java 7 он PKCS12
был в основном полезен в качестве хранилища ключей, но в меньшей степени для хранилища доверенных сертификатов (см. Разницу между хранилищем ключей и хранилищем доверенных сертификатов ), потому что вы не могли хранить записи сертификатов без закрытого ключа. Напротив, JKS
не требуется, чтобы каждая запись была записью с закрытым ключом, поэтому вы можете иметь записи, содержащие только сертификаты, что полезно для доверенных хранилищ, где вы храните список сертификатов, которым вы доверяете (но у вас нет закрытый ключ для них).
Это изменилось в Java 8, поэтому теперь в PKCS12
магазинах можно хранить только сертификаты . (Более подробную информацию об этих изменениях и дальнейших планах можно найти в JEP 229: Создание хранилищ ключей PKCS12 по умолчанию .)
Есть несколько других типов хранилищ ключей, которые, возможно, используются реже (в зависимости от контекста), в том числе:
PKCS11
, для библиотек PKCS # 11, обычно для доступа к аппаратным криптографическим токенам, но реализация поставщика Sun также поддерживает хранилища NSS (из Mozilla) через это.
BKS
с помощью поставщика BouncyCastle (обычно используется для Android).
Windows-MY
/ Windows-ROOT
, если вы хотите напрямую получить доступ к хранилищу сертификатов Windows.
KeychainStore
, если вы хотите напрямую использовать связку ключей OSX.