Тип 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. При загрузке хранилища ключей записи будут извлекаться из хранилища ключей, а затем преобразуются в записи программного обеспечения.

  • Отключить просмотр SSL в Chrome
  • Исключение SSLHandshake при подключении к сайту https
  • Почему некоторые веб-сайты отображают название компании рядом с URL-адресом?
  • Android HttpClient и HTTPS
  • Регистрация нескольких хранилищ ключей в JVM
  • Создание libcurl с поддержкой SSL в Windows
  • SSLHandshakeException: сообщение о нарушении не выполнено на Android N / 7.0
  • Как правильно установить сертификат, выданный мне?
  • Есть ли .NET-версия TLS 1.2?
  • Сколько накладных расходов накладывает SSL?
  • Как разрешены имена серверов сертификатов SSL / Можно ли добавлять альтернативные имена с помощью keytool?
  • Interesting Posts

    Использование текстовых значений из одного столбца для вывода в другой

    Может ли jQuery считывать / записывать cookies в браузер?

    Numpy to TFrecords: есть ли более простой способ обработки пакетных входов из tfrecords?

    Класс контейнера / библиотека для C

    Невозможно найти дескриптор библиотеки тегов для http://java.sun.com/jsf/facelets.

    Как преобразовать целочисленное число в двоичный вектор?

    Как использовать ScrollView в Android?

    Как остановить окна от установки драйвера

    Mac Terminal – ошибка «указатель освобождается не была» при открытии терминала

    ASP.NET MVC – альтернатива провайдеру роли?

    break и label: «Отсутствует метка MyLabel»

    Угловой фильтр точно по объектной клавише

    Как заблокировать файл с помощью C #?

    Публикуйте определенную информацию для Meteor.users и дополнительную информацию для Meteor.user

    MemTest возвращает большое количество ошибок в тесте 7, независимо от того, какой я использую

    Давайте будем гением компьютера.