#java #ssl #ssl-certificate #weblogic #spring-webclient
Вопрос:
У меня есть локальная среда с развернутым на ней приложением WebLogic 10.3.4 и .ear. Это приложение должно взаимодействовать с внешними службами через API REST. Эти внешние службы доступны по протоколу https и используют подстановочные сертификаты.
При попытке подключиться к одной из этих служб я получаю следующие исключения.
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://dds-service.domain.com" General SSLEngine problem; nested exception is javax.net.ssl.SSLHandshakeException: General SSLEngine problem [...]
[...] Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target [...]
[...] Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Итак, в первом случае я попытался открыть тот же URL-адрес, к которому приложение пытается подключиться в моем браузере, загрузить его сертификат с подстановочными знаками (в кодировке.cer Base64) и с помощью ключевого инструмента импортировать его в хранилище доверия jvm, которое загружает WebLogic и просматривает при попытке проверки сертификата. Я уверен, что это правильный вариант, потому что я импортировал другие сертификаты, которые вызвали ту же ошибку, а также из-за этого журнала
<Loading trusted certificates from the jks keystore file C:WEBLOG~1wlsJROCKI~1.1-3jrelibsecuritycacerts.>
На данный момент я полагаю, что проблема связана с тем, как я импортирую сертификат с подстановочными знаками в WebLogic. Я пытался найти различные способы сделать это, но, как и в этом случае, требуется файл .pfx, который в данный момент мне недоступен.
Нужен ли мне .pfx для решения этой проблемы или есть другой способ?
Ответ №1:
Если у кого-то когда-нибудь возникнет такая же проблема, вот решение, которое я нашел: похоже, что WLS 10.3.x имеет проблемы с доверием к сертификатам с ключами длиной более 128 бит, это и вызвало проблему в первую очередь. Тем не менее, 2 действия решили мою проблему
- -DUseSunHttpHandler=true добавлено в качестве аргумента виртуальной машины в сценарии setDomainEnv
- Включите SSL JSSE через консоль администратора WLS (Среда > Серверы >> имя сервера >>> Конфигурация > > > > SSL > > > > > > Дополнительно > > > > > > > > установите флажок SSL JSSE)
- Нажмите кнопку Сохранить и перезапустите сервер WLS.