У меня следующая проблема.У меня есть консоль сервера jboss и некоторые приложения, развернутые на ней, они взаимодействуют между собой во время отдыха.Поэтому я должен подключиться так:
HttpURLConnection connection = null;
try {
URL url = new URL("https://xxxx:xxxx/resource);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
} catch (MalformedURLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
"x" означает, что ip-сервер jboss и порт expose могут быть 8443 или 8080, в зависимости от используемого протокола.
Дело в том, что когда мое приложение пытается подключиться, выбрасывает следующую трассировку стека:
2019-02-05 16:54:00,029 ERROR [stderr] (taskScheduler-1) javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2019-02-05 16:54:00,029 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
2019-02-05 16:54:00,029 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
2019-02-05 16:54:00,029 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
2019-02-05 16:54:00,029 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
2019-02-05 16:54:00,029 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
2019-02-05 16:54:00,030 ERROR [stderr] (taskScheduler-1) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
Это заставляет меня думать, что это что-то в ssl и sni, но я не знаю, как добиться этого из кода,Я также нашел в консоли jboss эти ключи со своими значениями в системных свойствах: javax.net.ssl.trustStore, java.net.preferIPv4Stack и javax.net.ssl.trustStorePassword.
Но я незнаю, нужны ли они мне или для чего они на самом деле.