Определения Truststore и Keystore - PullRequest
267 голосов
/ 25 ноября 2008

В чем разница между хранилищем ключей и хранилищем доверенных сертификатов?

Ответы [ 6 ]

252 голосов
/ 25 ноября 2008

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

Склад доверенных сертификатов содержит сертификаты других сторон, с которыми вы ожидаете установить связь, или от центров сертификации, которым вы доверяете для идентификации других сторон.

76 голосов
/ 18 сентября 2009
  1. Хранилище ключей содержит закрытые ключи. Вам нужно это только если вы сервер, или если сервер требует аутентификации клиента.

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

Источник

69 голосов
/ 20 сентября 2013

В рукопожатии SSL целью trustStore является проверка учетных данных , а целью keyStore является предоставление учетных данных .

KeyStore

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

* 1014 доверенных *

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

TrustManager

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

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

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

29 голосов
/ 03 января 2010

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

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

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

9 голосов
/ 25 марта 2014

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

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

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

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

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

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

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

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

3 голосов
/ 13 января 2016
  1. Первое и основное различие между trustStore и keyStore заключается в том, что trustStore используется TrustManager для определения того, следует ли доверять удаленному соединению, keyStore используется из KeyManager, решая, какие учетные данные для аутентификации следует отправлять на удаленный хост для аутентификации во время SSL рукопожатия.

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

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

  3. По крайней мере на моем Mac OSX хранилище ключей по умолчанию - ${user.home}/.keystore, а хранилище доверия по умолчанию - /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. Вы могли бы также необходимо установить пароль хранилища ключей в случае 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...