Я пытаюсь добавить новый сервис в свое приложение. Я попытался добавить сертификат клиента в хранилище ключей, но другие мои компоненты больше не работают. В настоящее время я нахожусь в точке, где это работает в среде тестирования, но это не оптимально для живого использования.
SSLContext sc = SSLContext.getInstance("SSL");
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream(certPath), certPasswd.toCharArray());
kmf.init(ks, certPassw.toCharArray());
sc.init(kmf.getKeyManagers(), null, null);
SSLSocketFactory sslSocketFactorytemp = HttpsURLConnection.getDefaultSSLSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Service service = new Service(endpoint);
servicePort = service.getPort();
BindingProvider bindingProvider = (BindingProvider) servicePort;
bindingProvider.getRequestContext().put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", sc.getSocketFactory());
HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactorytemp);
Проблема в том, что когда я пытаюсь загрузить WSDL с сервера, серверауже запрашивает сертификат. Мое текущее решение: на короткое время (в течение которого я загружаю WSDL) я меняю DefaultSSLSocketFactory, но это не очень хорошее решение, потому что другие службы не работают в течение этого времени.
Так что мойВопрос в том, можно ли установить сертификат перед загрузкой WSDL с сервера? Или есть другие варианты решения моей проблемы?