Тип Keystore: какой из них использовать?

Посмотрев на файл java.security моего JRE , я вижу, что тип хранилища ключей, который будет использоваться по умолчанию, установлен в JKS . Здесь приведен список типов хранилищ ключей, которые можно использовать.

Есть ли рекомендуемый тип хранилища ключей? Каковы плюсы и минусы различных типов хранилищ ключей?

Есть еще несколько типов, чем указано в списке стандартных имен, к которому вы привязались. Дополнительную информацию вы можете найти в документации для криптографических поставщиков . Наиболее распространенными являются, конечно же, 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 магазинах PKCS12 . (Более подробную информацию об этих изменениях и дальнейших планах можно найти в JEP 229: Создать PKCS12 Keystores по умолчанию .)

Существует несколько других типов хранилищ ключей, возможно, менее часто используемых (в зависимости от контекста), в том числе:

  • PKCS11 , для библиотек PKCS # 11, как правило, для доступа к аппаратным криптографическим маркерам, но реализация поставщика Sun также поддерживает NSS-хранилища (из Mozilla) через это.
  • BKS , используя поставщика BouncyCastle (обычно используется для Android).
  • Windows-MY / Windows-ROOT , если вы хотите получить доступ к хранилищу сертификатов Windows напрямую.
  • KeychainStore , если вы хотите напрямую использовать брелок OSX.

Вот сообщение, в котором представлены различные типы хранилищ ключей в Java и различия между различными типами хранилища ключей. http://www.pixelstech.net/article/1408345768-Different-types-of-keystore-in-Java—-Overview

Ниже приведены описания различных хранилищ ключей из сообщения:

JKS, Java Key Store. Вы можете найти этот файл на sun.security.provider.JavaKeyStore. Это хранилище ключей является специфичным для Java, оно обычно имеет расширение jks. Этот тип хранилища ключей может содержать секретные ключи и сертификаты, но он не может использоваться для хранения секретных ключей. Поскольку это конкретное хранилище ключей Java, поэтому оно не может использоваться на других языках программирования.

JCEKS, магазин ключей JCE. Вы можете найти этот файл на com.sun.crypto.provider.JceKeyStore. Это хранилище ключей имеет расширение jceks. Записи, которые могут быть помещены в хранилище ключей JCEKS, – это секретные ключи, секретные ключи и сертификаты.

PKCS12, это стандартный тип хранилища ключей, который может использоваться на Java и других языках. Вы можете найти эту реализацию хранилища ключей на sun.security.pkcs12.PKCS12KeyStore. Обычно он имеет расширение p12 или pfx. Вы можете хранить секретные ключи, секретные ключи и сертификаты этого типа.

PKCS11, это аппаратный тип хранилища ключей. Он поддерживает интерфейс для библиотеки Java для подключения к аппаратным хранилищам ключей, таким как Luna, nCipher. Вы можете найти эту реализацию на sun.security.pkcs11.P11KeyStore. Когда вы загружаете хранилище ключей, вам не нужно создавать конкретного поставщика с определенной конфигурацией. Это хранилище ключей может хранить секретные ключи, секретные ключи и cetrificates. При загрузке хранилища ключей записи будут извлекаться из хранилища ключей, а затем преобразуются в записи программного обеспечения.

  • Принудительное HTTPS для определенного URL-адреса
  • ssl.SSLError: версия протокола предупреждения tlsv1
  • Как легко создать сертификат SSL и настроить его в Apache2 в Mac OS X?
  • Какие версии SSL / TLS поддерживают System.Net.WebRequest?
  • Как узнать, был ли запрос на сервлет выполнен с использованием HTTP или HTTPS?
  • JavaMail IMAP через SSL довольно медленно - Массовая выборка нескольких сообщений
  • Есть ли .NET-версия TLS 1.2?
  • Что делает Subversion для своего списка CA?
  • Как искать не ssl google?
  • веб-просмотр android с сертификатом клиента
  • Правильное закрытие SSLSocket
  • Давайте будем гением компьютера.