Определения Truststore и Keystore

Какая разница между хранилищем ключей и доверительным магазином?

Ответ 1

Хранилище ключей содержит закрытые ключи и сертификаты с соответствующими открытыми ключами.

В Truststore содержатся сертификаты других сторон, с которыми вы собираетесь общаться, или от авторитетов сертификатов, которым вы доверяете, чтобы идентифицировать другие стороны.

Ответ 2

  • Ключевое слово содержит секретные ключи. Вам это нужно только в том случае, если вы сервер, или если сервер требует аутентификации клиента.

  • Доверенность содержит сертификаты CA для доверия. Если ваши серверы сертификат подписывается признанным ЦС, доверительным магазином по умолчанию что корабль с JRE уже будет ему доверять (потому что он уже доверяет заслуживающим доверия ЦС), поэтому вам не нужно создавать свои собственные, или добавить что-либо к одному из JRE.

Источник

Ответ 3

В приветствии SSL цель trustStore - проверить учетные данные, а цель keyStore - предоставить учетные данные.

KeyStore

keyStore в Java хранит закрытый ключ и сертификаты, соответствующие их открытым ключам, и требует, чтобы SSL-сервер или SSL требовали аутентификации клиента.

доверенного

TrustStore хранит сертификаты от сторонних поставщиков, ваше приложение Java-приложения или сертификаты, подписанные CA (такими властями сертификатов, как Verisign, Thawte, Geotrust или GoDaddy), которые могут использоваться для идентификации третьей стороны.

TrustManager

TrustManager определяет, нужно ли доверять удаленное соединение или нет, то есть, является ли сторонняя сторона, к кому она относится, и KeyManager решает, какие учетные данные аутентификации должны быть отправлены на удаленный хост для аутентификации во время установления связи SSL.

Если вы являетесь сервером SSL, вы будете использовать закрытый ключ во время алгоритма обмена ключами и отправлять сертификаты, соответствующие вашим открытым ключам клиенту, этот сертификат будет получен из keyStore. На стороне клиента SSL, если он написан на Java, он будет использовать сертификаты, хранящиеся в trustStore, для проверки подлинности сервера. Сертификаты SSL чаще всего используются в качестве файла .cer, который добавляется в keyStore или trustStore с помощью любой утилиты управления ключами, например. Keytool.

Источник: http://javarevisited.blogspot.ch

Ответ 4

Вы также можете быть заинтересованы в записи от Sun, как часть стандартной документации JSSE:

http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores

Как правило, хранилище доверия используется для хранения только открытых ключей для целей проверки, таких как проверка подлинности X.509. Для целей управления достаточно для администраторов или разработчиков просто объединить их в один магазин.

Ответ 5

В Java, какая разница между хранилищем ключей и доверительным магазином?

Здесь описание из документов Java в Справочном руководстве по расширению Java Secure Socket Extension (JSSE). Я не думаю, что это говорит вам что-то отличное от того, что говорили другие. Но это дает официальную ссылку.

Хранилище ключей/доверенное хранилище

A keystore - это база данных с ключевым материалом. Основной материал используется для различных целей, включая аутентификацию и целостность данных. Доступны различные типы хранилищ ключей, включая PKCS12 и Oracle JKS.

В общем случае информация о хранилище ключей может быть сгруппирована в две категории: ключевые записи и доверенные записи сертификатов. Ключевая запись состоит из идентификатора объекта и его закрытого ключа и может использоваться для различных криптографических целей. Напротив, доверенный запись сертификата содержит только открытый ключ в дополнение к идентичность сущности. Таким образом, доверенная запись сертификата не может быть использована где требуется закрытый ключ, например, в javax.net.ssl.KeyManager. В JDK реализации JKS, хранилище ключей может содержать как ключевые записи, так и доверенные записи сертификатов.

Truststore - хранилище ключей, которое используется при принятии решений о том, что нужно доверять. Если вы получаете данные от лица, которое вы уже доверяют, и если вы можете проверить, что объект является тем, который он утверждает, что есть, то вы можете предположить, что данные действительно пришли из этот объект.

Запись должна быть добавлена ​​только в доверительный магазин, если пользователь доверяет этому объекту. Путем создания пары ключей или путем импорта сертификат, пользователь доверяет этой записи. Любая запись в truststore считается доверенной записью.

Может быть полезно иметь два разных файла хранилища ключей: один, содержащий только ваши ключевые записи, а другой, содержащий ваши доверенных записей сертификатов, включая сертификаты CA. Бывший содержит личную информацию, а вторая - нет. Использование двух файлы вместо одного файла хранилища ключей обеспечивают более чистое разделение логического различия между вашими собственными сертификатами (и соответствующие секретные ключи) и другие сертификаты. Предоставить больше защиты ваших личных ключей, храните их в хранилище ключей ограниченный доступ и предоставлять доверенные сертификаты в более общедоступное хранилище ключей, если необходимо.

Ответ 6

  • Первое и основное различие между trustStore и keyStore заключается в том, что TrustStore используется TrustManager для определения того, нужно ли доверять удаленному соединению, keyStore используется из KeyManager, определяя, какие учетные данные аутентификации должны быть отправлены на удаленный хост для аутентификации во время SSL рукопожатие.

  • Другое отличие состоит в том, что keyStore теоретически содержит закрытые ключи, необходимые только при запуске сервера в SSL-соединении или вы включили аутентификацию клиента на стороне сервера, а с другой стороны trustStore хранит открытый ключ или сертификаты из CA (сертификат Власти), которые используются, чтобы доверять удаленной стороне или SSL-соединению.

    Фактически вы можете хранить в одном файле как личные, так и открытые ключи, что инструмент для управления этими файлами одинаковый (keytool), поэтому вы можете использовать один файл для обеих целей, но вы вероятно, не стоит.

  • По крайней мере, на моем Mac OSX ключевое хранилище по умолчанию - ${user.home}/.keystore, а trustStore по умолчанию - /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts.

    Если вы хотите переопределить их, вы должны добавить параметры JVM -Djavax.net.ssl.keyStore /path/to/keyStore или -Djavax.net.ssl.trustStore /path/to/trustStore. Вы также можете необходимо установить пароль keyStore в случае java.security.UnrecoverableKeyException: Password must not be null, используя параметр -Djavax.net.ssl.trustStorePassword=password или -Djavax.net.ssl.trustStorePassword=password

Основной источник:

http://javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html