Код: Выделить всё
server.xmlКод: Выделить всё
< /code>
Функции Liberty вышли из: < /pbr />
concurrent-1.0
webProfile-8.0
javaMail-1.6
mpHealth-4.0
< /code>
to: < /p>
concurrent-3.0
webProfile-10.0
mail-2.1
mpHealth-4.0
< /code>
Те же версии OpenLiberty (последние, в настоящее время 25.0.0.9). < /p>
Тот же код WebSock, который работает под старой версией приложения: < /p>
webSocket = HttpClient.newHttpClient().newWebSocketBuilder()
.connectTimeout(Duration.ofSeconds(5))
.buildAsync(URI.create(endpoint), this)
.get();
< /code>
Результаты ошибки цепочки сертификатов в рамках новой версии: < /p>
21: 15: 01,510 ошибка com.ibm.gs.houston.payment.pos.ingenico.usi.usiposprovider: startpayment [default rexor-justor-hreadthrehdh OrderNumber = 2025092504, DeviceId = 9995: java.util.concurrent.executionException: javax.net.ssl.sslhandshakeexception: Pkix Path Build javax.net.ssl.sslhandshakeexception: Pkix Path Building Fake: sun.security.provider.certpath.suncertpathbuilderexception: Невозможно найти действительный путь сертификации для запрошенной цели
нет более дополнительной информации с JVM или Liberty SSL -DELUG/TRACE/PRACE. Похоже, Java.net.http.websocket Код: Выделить всё
webSocket = HttpClient.newBuilder().sslContext(sslContext).build().newWebSocketBuilder()
.connectTimeout(Duration.ofSeconds(5))
.buildAsync(URI.create(endpoint), this)
.get();
Код: Выделить всё
com.ibm.websphere.ssl.JSSEHelper.getInstance().getSSLContext("defaultSSLConfig", null, null);
< /code>
Но теперь я получаю ошибку < /p>
javax.net.ssl.SSLHandshakeException: No name matching found
(у нас также есть действительный сертификат диких знаков, но это отдельная тема.) Есть ли лучший, рекомендуемый способ получить необходимое поведение, которое мне нужно, где я указал свободу в хранилище доверия, который содержит необходимые сертификаты для этого веб -общения? (SSL-1.0) Функция включена, вы получаете класс SSLContext Liberty по умолчанию с помощью метода sslContext.getDefault (). Однако, когда функция безопасности транспортной безопасности включена, метод sslContext.getDefault () возвращает класс SSLContext Java Secure Socket Extension (JSSE). Поэтому изменение из одной функции на другую может потребовать от вас обновления кода приложения. Чтобы получить класс Liberty SSLContext, когда включена функция безопасности транспортной безопасности, используйте метод jsseHelper.getInstance (). getSslContext (NULL, NULL, NULL) вместо метода SSLCONTEXT.GETDEFAUL "Defaultsslconfig": < /p>
Код: Выделить всё
com.ibm.websphere.ssl.JSSEHelper.getInstance().getSSLContext(null, null, null);
и, просматривая код с отладчиком, свойства экземпляра sslcontext do содержит переопределение имени хоста. Из типа реализации libertysslcontext.contextspi.delegate.contextspi.trustmanager.config :
Код: Выделить всё
...
com.ibm.ssl.alias=defaultSSLConfig
com.ibm.ssl.trustStoreName=defaultTrustStore
com.ibm.ws.ssl.verifyHostname=false
...
Подробнее здесь: https://stackoverflow.com/questions/797 ... 21-jakarta
Мобильная версия