Определения хранилища доверия и хранилища ключей

StackOverflow https://stackoverflow.com/questions/318441

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

<Ол>
  • Хранилище ключей содержит закрытые ключи. Вам нужно это только если вы сервер, или если сервер требует аутентификации клиента.

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

  • источник

    При рукопожатии SSL цель trustStore предназначен для проверки учетных данных и цель этого Хранилище ключей предназначено для предоставления учетных данных.

    Хранилище ключей

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

    Доверительный магазин

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

    Управляющий доверием

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

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

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

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

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

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

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

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

    хранилище ключей /truststore

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

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

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

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

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

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

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

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

  • По крайней мере на моем Mac OSX хранилище ключей по умолчанию - $ {user.home} /. keystore , а хранилище доверенных сертификатов по умолчанию - / System / Library / Java / Support / CoreDeploy.bundle / Содержание / Главная / Библиотека / безопасность / cacerts .

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

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

      

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top