Я распределяю библиотеку jar для внутренних клиентов, а в библиотеку входит сертификат, который он использует для вызова службы, которая также является внутренней для нашей сети.
Менеджер доверия настроен следующим образом
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore keystore = KeyStore.getInstance("JKS");
InputStream keystoreStream =
clazz.getClassLoader().getResourceAsStream("certs.keystore"); // (on classpath)
keystore.load(keystoreStream, "pa55w0rd".toCharArray());
trustManagerFactory.init(keystore);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
SSLContext context = SSLContext.getInstance("SSL");
context.init(null, trustManagers, null);
SSLSocketFactory socketFact = context.getSocketFactory();
connection.setSSLSocketFactory(socketFact);
Все это прекрасно работает, за исключением случаев, когда пользователям нужны другие сертификаты или сертификат по умолчанию.
Я пробовал это Зарегистрировать несколько хранилищ ключей в JVM без везения (у меня возникают проблемы с обобщением его для моего случая)
Как я могу использовать свой сертификат и все еще разрешать библиотекам пользователей использовать свои собственные сертификаты?