Truststore и определения ключей

в чем разница между хранилищем ключей и truststore?

6 ответов


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

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


  1. хранилище ключей содержит закрытые ключи. Тебе это нужно, только если ты ... сервер, или если сервер требует проверки подлинности клиента.

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

источник


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

хранилище

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

TrustStore

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

TrustManager

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

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

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


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

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

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


в Java, в чем разница между хранилищем ключей и truststore?

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

хранилище/хранилище

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

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

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

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

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


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

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

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

  3. по крайней мере, на моем 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. Вы также можете необходимо установить пароль хранилища ключей в случае 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