При создании соединения SSL с помощью Java мы сначала инициализировать SSLContext с нашими Хранилища ключей и TrustStores. SSLContext в javax.net.ssl имеет метод createSSLEngine() для создания SSLEngine. Поэтому при создании сеанса для соединения будет использоваться созданный SSLEngine. Мой вопрос в какой точке протокола SSL используются keyManagers и TrustManagers из KeyStores и TrustStores?Как хранилища доверия и хранилища ключей используются в SSL?
Заранее спасибо.
Все это довольно четко описано в [Справочном руководстве JSSE] (http://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html). С какой частью у вас проблемы? – EJP
Мне нужно знать, реализовано ли использование хранилищ Trust в SSLEngine? Если да, то как? Я задаю этот вопрос, потому что, когда я получаю цепочку сертификатов от клиента, корневой сертификат в цепочке должен находиться в Truststore, чтобы сделать SSL-соединение. Я не уверен, что это реализовано в реализациях SSL в Java. – Jeewantha
Это так. SSLEngine выполняет SSL-квитирование, проверяет сертификаты peer через TrustManager и делает SSLSession, содержащий сертификат однорангового узла, доступный для приложения. Вот почему SSLEngine создается из SSLContext, в котором есть KeyManagers и TrustManagers. – EJP