6 ответов:
хранилище ключей содержит закрытые ключи и сертификаты с соответствующими открытыми ключами.
хранилище доверенных сертификатов содержит сертификаты от других сторон, с которыми предполагается установить связь, или от центров сертификации, которым Вы доверяете для идентификации других сторон.
хранилище ключей содержит закрытые ключи. Вам это нужно только в том случае, если вы сервер, или если сервер требует проверки подлинности клиента.
хранилище доверенных сертификатов содержит сертификаты CA для доверия. Если ваш сервер сертификат подписывается признанным центром сертификации, хранилищем доверия по умолчанию что корабли с JRE уже будут доверять ему (потому что он уже доверяет благонадежному КАС), поэтому вам не нужно построить ваше собственное, или добавить что-нибудь к одному из среда JRE.
в SSL рукопожатие цель trustStore-это проверка учетных данных и цель keyStore должен предоставить учетные данные.
keyStore
keyStore в Java хранит закрытый ключ и сертификаты, соответствующие их открытым ключам, и требует, если вы являетесь сервером SSL или SSL требует аутентификации клиента.
TrustStore
хранилища сертификатов доверенных сертификатов от третьего лица, ваше приложение Java связывается или сертификаты, подписанные CA (центры сертификации, такие как Verisign, Thawte, Geotrust или GoDaddy), которые могут быть использованы для идентификации третьей стороны.
TrustManager
TrustManager определяет, должно ли удаленное соединение быть доверенным или нет, т. е. является ли удаленная сторона тем, на кого она претендует, и KeyManager решает, какие учетные данные аутентификации должны быть отправлены на удаленный хост для аутентификации во время SSL рукопожатие.
Если вы являетесь сервером SSL, вы будете использовать закрытый ключ во время алгоритма обмена ключами и отправлять сертификаты, соответствующие вашим открытым ключам, клиенту, этот сертификат приобретается из хранилища ключей. На стороне клиента SSL, если он написан на Java, он будет использовать сертификаты, хранящиеся в trustStore для проверки подлинности сервера. SSL сертификаты чаще всего приходит как .cer файл, который добавляется в keyStore или 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, в чем разница между хранилищем ключей и хранилищем доверия?
Вот описание из документов Java в Java Secure Socket Extension (JSSE) справочное руководство. Я не думаю, что это говорит вам что-то отличное от того, что говорили другие. Но он дает официальную ссылку.
keystore / truststore
хранилище ключей-это база ключевого материала. Ключевой материал использован для различных целей, включая аутентификацию и целостность данных. Доступны различные типы хранилищ ключей, в том числе PKCS12 и Оракул-это JKS.
вообще говоря, информацию о хранилище ключей можно сгруппировать в две категории: ключевые записи и записи доверенных сертификатов. Ключевая запись состоит из идентификатора сущности и ее закрытого ключа и может использоваться для различных криптографических целей. В отличие от доверенного лица запись сертификата содержит только открытый ключ дополнение к личность субъекта. Таким образом, запись доверенного сертификата не может быть использована когда требуется закрытый ключ, например, в класса javax.чистая.протокол SSL.KeyManager. В реализации JDK следующих, хранилище может содержать как ключевые записи, так и записи доверенных сертификатов.
в хранилище keystore, который используется при принятии решений о том, что доверять. Если вы получаете данные от объекта, который вы уже доверяют, и если вы можете проверить, что сущность является тем, что оно утверждает, то можно предположить, что данные действительно пришли из эта сущность.
запись должна быть добавлена в хранилище доверия только в том случае, если пользователь доверяет этой сущности. Либо генерируя пару ключей, либо импортируя сертификат, пользователь дает доверие к этой записи. Любая запись в хранилище считается надежным записи.
может быть полезно иметь два разных файла хранилища ключей: один содержит только ваши ключевые записи, а другой содержит ваши доверившийся записи сертификатов, включая сертификаты CA. Первый содержит личную информацию, в то время как последняя не содержит. Через два файлы вместо одного файла хранилища ключей обеспечивает более чистое разделение логического различия между вашими собственными сертификатами (и соответствующие закрытые ключи) и другие сертификаты. Чтобы обеспечить больше защита для ваших закрытых ключей, храните их в хранилище ключей с помощью ограниченный доступ и предоставление доверенных сертификатов в более общедоступный хранилище ключей, если это необходимо.
первое и главное различие между trustStore и keyStore заключается в том, что trustStore используется TrustManager для определения того, должно ли удаленное соединение быть доверенным, keyStore используется из KeyManager, решая, какие учетные данные аутентификации должны быть отправлены на удаленный хост для аутентификации во время подтверждения SSL.
другое отличие заключается в том, что хранилище ключей теоретически содержит закрытые ключи, необходимые только при запуске сервера в 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. Вы также можете необходимо установить пароль хранилища ключей в случае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
Comments