Реактивный веб-клиент Spring для использования хранилища доверенных сертификатов IBM WAS по умолчанию вместо хранилища по умолчанию, расположенного в jre\lib\security\cacerts
Как я могу заставить org.springframework.web.reactive.function.client.WebClient использовать хранилище доверенных сертификатов IBM по умолчанию, которое обычно находится в ${WAS_INSTALL_ROOT}/profile/default/config/cells/myhostNode01Cell/nodes/myhostNode01/trust.p12
По умолчанию он смотрит на C:\Program Files\IBM\WebSphere\AppServer\java\8.0\jre\lib\security\cacerts
Наша команда разработчиков инфраструктуры не хочет использовать расположение Java для хранения сертификатов, поскольку каждый раз, когда они выполняют обновление Java или обслуживание WAS, им приходится все переустанавливать. Теперь они не хотят устанавливать javax.net.ssl.trustStore ни в свойствах системы, так как путь к WAS является динамическим и может измениться в будущем. Более того, его необходимо установить на каждом узле в производстве. Вот как я создаю WebClient, чтобы общаться с остальным API
WebClient webClient = WebClient.builder().build();
и Ниже приведено исключение, которое я получаю, когда пытаюсь вызвать конечную точку REST с помощью веб-клиента. Как я сказал выше, если я импортирую сертификат в Java cacerts, он работает нормально.
Вызвано: java.security.cert.CertPathValidatorException: ошибка связывания сертификата в com.ibm.security.cert.CertPathUtil.findIssuer(CertPathUtil.java:316) ~[?:8.0 build_20180821] в com.ibm.security.ckert.BasicCheck.(BasicChecker.java:108) ~[?:8.0 build_20180821] в com.ibm.security.cert.PKIXCertPathValidatorImpl.engineValidate(PKIXCertPathValidatorImpl.java:220) ~[?:8.0 build_20180821] в com.ibm.PKIXCertPathBuilderImpl.myValidator(PKIXCertPathBuilderImpl.java:749) ~[?:8.0 build_20180821] в com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.buildCertPath (PKIXCertPathBuilderImpl.buildCertPath) (PKIXCertPath_BuilderImpl.buildCertPath) (PKIXCertPath_builderImpl.buildCertPath) ~ 8.0: 8.0.build_security. cert.PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.java:607) ~[?:8.0 build_20180821] в com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild (PKIXCertPathBuilderImpl.java:368) ~ [?: 8.0 build_20180821] в java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) ~ [?:?] в com.ibm.jsse2.util.fa(f.java: 54) ~[?:8.0 build_20181010] в com.ibm.jsse2.util.fb (f.java:89) ~[?:8.0 build_20181010] в com.ibm.jsse2.util.ea(e.java: 17) ~[?:8.0 build_20181010] в com.ibm.jsse2.aD.a(aD.java:90) ~[?:8.0 build_20181010] в com.ibm.jsse2.aD.a(aD.java:107) ~[?:8.0 build_20181010] в com.ibm.jsse2.aD.checkServerTrusted (aD.java:102) ~[?:8.0 build_20181010] в com.ibm.jsse2.Ea(E.java:322) ~[?:8.0 build_20181010] в com.ibm.jsse2.Ea(E.java:401) ~[?:8.0 build_20181010] в com.ibm.jsse2.Dr (D.java:444) ~[?:8.0 build_20181010] в com.ibm.jsse2.D $ ba(D $ b.java: 2) ~[?:8.0 build_20181010] в com.ibm.jsse2.D$b.run(D$b.java:3) ~[?:8.0 build_20181010] в java.security.AccessController.doPrivileged(AccessController.java:739) ~[?:1.8.0] в com.ibm.jsse2.D$c.run(D$c.java:12) ~[?:8.0 build_20181010] в io.netty.handler.ssl.SslHandler.runAllDelegatedTasks(SslHandler.java:1494) ~[netty-handler-4.1.45.Final.jar:4.1.45.Final] в io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1508) ~[netty-handler-4.1.45.Final.jar:4.1.45.Final] в io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1392) ~[netty-handler-4.1.45.Final.jar:4.1.45.Final] в io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1219) ~[netty-handler-4.1.45.Final.jar:4.1.45.Final] в io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1266) ~[netty-handler-4.1.45.Final.jar:4.1.45.Final] в io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498) ~[netty-codec-4.1.45.Final.jar:4.1.45.Final] в io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessagejavaDecoder.callDecode (netty-codec-4.1.45.Final.jar) ~ -codec-4.1.45.Final.jar: 4.1.45.Final]