Когда они используются, JSSE использует эти настройки для создания своего значения по умолчанию X509TrustManager
(переопределяя значение по умолчанию JRE). Однако в API JSSE нет ничего, чтобы получить доступ к хранилищу ключей, с помощью которого был построен диспетчер доверия по умолчанию, поскольку в архитектуре JSSE диспетчер доверия по умолчанию в принципе не нужно создавать из хранилища ключей.
Если вы хотите прочитать содержимое доверенного хранилища, переданное через свойства javax.net.ssl.trustStore*
, вам придется открыть файл самостоятельно.
Самое близкое, что вы можете получить, это X509TrustManager
по умолчанию, используя TrustManagerFactory
по умолчанию.
ИЗМЕНИТЬ:
Для получения более подробной информации вы можете посмотреть реализацию в OpenJDK.
Логика в sun.security.ssl.DefaultSSLContextImpl
(не является частью общедоступного API) заключается в инициализации TrustManagerFactory
с помощью KeyStore
, полученного из TrustManagerFactoryImpl
(который также не является частью общедоступного API):
KeyStore ks = TrustManagerFactoryImpl.getCacertsKeyStore("defaultctx");
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
Это согласуется с поведением TrustManagerFactory
с tmf.init(null)
. Это также зависело бы от хранилища ключей по умолчанию, но это задокументировано в общедоступном API. Действительно, реализация (с tmf.init(null)
) в конечном итоге делает то же самое, как показано в TrustManagerFactoryImpl
(engineInit
также вызывает getCacertsKeyStore
, когда параметр хранилища ключей имеет значение null).
В обоих случаях переменная KeyStore
не хранится в члене класса, это просто локальная переменная, которая недоступна после использования этих методов инициализации.
В результате X509TrustManagerImpl
действительно содержит список доверенных сертификатов, но (а) trustedCerts
является закрытым членом и (б) ничего из этого не является частью общедоступного API JSSE.
РЕДАКТИРОВАТЬ 2:
Если вам нужно что-то, что, вероятно, будет работать большую часть времени, но не гарантируется, этот ответ должен помочь. Имейте в виду, что хранилище доверенных сертификатов по умолчанию не не обязательно cacerts
.
person
Bruno
schedule
16.01.2012