2013-02-27 6 views
0

При создании соединения SSL с помощью Java мы сначала инициализировать SSLContext с нашими Хранилища ключей и TrustStores. SSLContext в javax.net.ssl ​​ имеет метод createSSLEngine() для создания SSLEngine. Поэтому при создании сеанса для соединения будет использоваться созданный SSLEngine. Мой вопрос в какой точке протокола SSL используются keyManagers и TrustManagers из KeyStores и TrustStores?Как хранилища доверия и хранилища ключей используются в SSL?

Заранее спасибо.

+1

Все это довольно четко описано в [Справочном руководстве JSSE] (http://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html). С какой частью у вас проблемы? – EJP

+0

Мне нужно знать, реализовано ли использование хранилищ Trust в SSLEngine? Если да, то как? Я задаю этот вопрос, потому что, когда я получаю цепочку сертификатов от клиента, корневой сертификат в цепочке должен находиться в Truststore, чтобы сделать SSL-соединение. Я не уверен, что это реализовано в реализациях SSL в Java. – Jeewantha

+1

Это так. SSLEngine выполняет SSL-квитирование, проверяет сертификаты peer через TrustManager и делает SSLSession, содержащий сертификат однорангового узла, доступный для приложения. Вот почему SSLEngine создается из SSLContext, в котором есть KeyManagers и TrustManagers. – EJP

ответ

1

Во время установления связи SSL при установлении взаимного доверия и аутентификации и создании сеанса SSL.

Что касается вашего отправляемого вопроса, то стандартный доверительный управляющий JSSE считает, что цепочка сертификатов доверена, если доверен хотя бы один сертификат в цепочке. Это не должно быть корневым сертификатом. Если вы абсолютно уверены, что вам необходимо установить достоверность и достоверность корневого сертификата, вы должны реализовать собственный TrustManager и использовать его вместо реализации по умолчанию.

 Смежные вопросы

  • Нет связанных вопросов^_^