Ответ 1
Когда они используются, JSSE использует эти параметры для построения своего стандартного X509TrustManager
(переопределения значения по умолчанию JRE). Однако в API JSSE нет ничего, чтобы получить доступ к хранилищу ключей, с которым был создан менеджер доверия по умолчанию, поскольку в архитектуре JSSE доверительный менеджер по умолчанию не должен строиться из хранилища ключей в принципе.
Если вы хотите прочитать содержимое хранилища доверия, прошедшего через свойства javax.net.ssl.trustStore*
, вам придется открыть файл самостоятельно.
Самое близкое, что вы можете получить, будет по умолчанию X509TrustManager
по умолчанию TrustManagerFactory
.
EDIT:
Для более подробной информации вы можете посмотреть реализацию в 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
> , когда параметр keystore равен нулю).
В обоих случаях переменная KeyStore
не сохраняется в члене класса, это просто локальная переменная, недоступная после использования этих методов инициализации.
Полученный X509TrustManagerImpl
действительно содержит список доверенных сертификатов, но (a) trustedCerts
является частным членом и ( б) все это не является частью публичного API JSSE.
ИЗМЕНИТЬ 2:
Если вы хотите что-то, что скорее всего работает большую часть времени, но не гарантируется работа, этот ответ должен помочь. Имейте в виду, что хранилище доверия по умолчанию не обязательно cacerts
.