Визначення довіри та клавіатури


Відповіді:


268

У магазині брелоків зберігаються приватні ключі та сертифікати з відповідними відкритими ключами.

Довірений магазин містить сертифікати інших сторін, з якими ви очікуєте спілкуватися, або від органів сертифікації, яким ви довіряєте ідентифікувати інших сторін.


12
Хоча це має бути правдою на практиці, вони можуть (і часто є) одним і тим же. Ви можете фактично імпортувати приватний ключ та державний сертифікат у "довірений магазин" / jre / lib / security / cacerts за замовчуванням. Утиліта keytool не розрізняє два терміни, лише у типах магазинів (тобто - JKS проти PKCS12). З цього питання, Java робить те саме, що у вихідному коді. Ви створюєте java.security.KeyStore і використовуєте довірчий менеджер для управління сертифікатами в ньому, але класу TrustStore немає.

4
Java не має TrustStore само по собі . Або я не зміг її знайти в документах Java (наприклад, java.security.TrustStore). Коли ми хочемо довіряти Сертифікаційному органу, він довіряється через KeyStoreKeyStoreпередається в TrustManagerFactory).
jww

5
Варто зазначити, що KeyStore.load(InputStream is, char[] password)( docs ) можуть взяти нульовий пароль, і він надасть доступ до публічних сертифікатів. Тобто код, який хоче переглядати довірчий магазин, не повинен знати його пароль (з дуже поважних причин!)
xverges

83
  1. У магазині брелоків є приватні ключі. Це вам потрібно лише в тому випадку, якщо ви є сервером або якщо сервер вимагає аутентифікації клієнта.

  2. Довірений магазин містить сертифікати CA, яким слід довіряти. Якщо сертифікат вашого сервера підписаний визнаним адміністратором, довірений магазин, що постачається за замовчуванням, що постачається з JRE, вже буде йому довіряти (тому що він вже довіряє надійним ЦО), тому вам не потрібно створювати свій власний або додавати щось до одного від JRE.

Джерело


73

У рукостисканні SSL метою trustStore є перевірка облікових даних, а мета keyStore - надання облікових даних .

KeyStore

keyStore в Java зберігає приватний ключ та сертифікати, що відповідають їх відкритим ключам, і вимагає, якщо ви SSL Server або SSL вимагає аутентифікацію клієнта.

TrustStore

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


31

Можливо, вас також зацікавить списання з Sun, як частина стандартної документації JSSE:

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

Зазвичай довірений магазин використовується для зберігання лише відкритих ключів для цілей перевірки, наприклад, для автентифікації X.509. З метою керування, адміністратори або розробники досить часто пов'язують їх в один магазин.


1
Надає 404 на жаль
Кріс Біч

@ChrisBeach - оновили посилання на правильне на сайті Oracle.
Пітер Муларієн

1
Довірений магазин використовується для зберігання довірених сертифікатів підписувача.
Маркіз Лорн

9

У Java, яка різниця між магазином брелоків і магазином довіри?

Ось опис документів Java в Довідковому посібнику Java Secure Socket Extension (JSSE) . Я не думаю, що це говорить вам щось інше, ніж те, що сказали інші. Але це дає офіційну довідку.

keystore / truststore

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

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

Довірений магазин - це сховище ключів, яке використовується під час прийняття рішень щодо того, чому можна довіряти. Якщо ви отримуєте дані від суб'єкта, якому ви вже довіряєте, і якщо ви можете переконатися, що ця особа є такою, якою вона претендує, то ви можете припустити, що дані дійсно надійшли від цього об'єкта.

Запис слід додати до сховища довіри, лише якщо користувач довіряє цій сутності. Генеруючи пару ключів або імпортуючи сертифікат, користувач надає довіру цьому запису. Будь-який запис у довіреній сховищі вважається довіреним.

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


4
  1. Перша і основна відмінність trustStore від keyStore полягає в тому, що TrustManager використовує trustStore для визначення того, чи слід довіряти віддаленому з’єднанню, keyStore використовується з KeyManager, вирішуючи, які дані автентифікації повинні бути надіслані віддаленому хосту для аутентифікації під час передачі SSL.

  2. Інша відмінність полягає в тому, що keyStore теоретично містить приватні ключі, необхідні лише в тому випадку, якщо ви працюєте з сервером у SSL-з'єднанні або увімкнули автентифікацію клієнта на стороні сервера, а з іншого боку trustStore зберігає відкритий ключ або сертифікати від CA (Certificate Authorities), які використовуються для довіряти віддаленій стороні або SSL-з'єднанню.

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

  3. Принаймні, на моєму Mac OSX типовим є KeyStore ${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-bet between-truststore-vs-keyStore-Java-SSL.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.