Quantcast
Viewing all articles
Browse latest Browse all 1553

Https calls not working with Webclient with self signed p12 certificate

I have enabled HTTPS for my Springboot Webflux (using Netty server) microservices by creating a self-signed certificate using keytool

keytool -genkeypair -alias mycert -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore mycert.p12 -validity 3650

I have then placed the certificate in src/main/resources/keystore and added these properties in my application properties file -

#Settings to enable https# The format used for the keystore. It could be set to JKS in case it is a JKS fileserver.ssl.key-store-type=PKCS12# The path to the keystore containing the certificateserver.ssl.key-store=classpath:keystore/mycert.p12# The password used to generate the certificateserver.ssl.key-store-password=password# The alias mapped to the certificateserver.ssl.key-alias=mycertserver.ssl.enabled=trueserver.ssl.trust-store-password=password

I have 4 microservices and I have used the same certificate and same above config properties for all the 4 services and I see the services are coming up with the HTTPS enabled.

As part of some flows we need to call an endpoint(now https) from one of these services(A) to another service(B) and this is how I have modified the webclient creation logic in service A to account for the https-

@Value("${server.ssl.trust-store-password}")  private String trustStorePassword;@Bean  @Qualifier("serviceBWebClient")  public WebClient serviceBWebClient(WebClient.Builder builder) {    HttpClient secureCLient = null;    try {      LOGGER.info("Creating WebClient bean for service B API calls");      secureCLient = getSecuredHttpClient();    } catch(Exception e){      LOGGER.error("Exception occurred in creating secured web client for service B API call");    }    return builder            .baseUrl("https://localhost:9443/api")            .clientConnector(new ReactorClientHttpConnector(null!=secureCLient?secureCLient:getUnsecuredHttpClient()))            .build();  } private HttpClient getSecuredHttpClient() throws Exception {    LOGGER.info("Creating secure HttpClient.");    File file = new ClassPathResource("keystore/mycert.p12").getFile();    return HttpClient.create().secure(spec -> {      try {        KeyStore keyStore = KeyStore.getInstance("PKCS12");        keyStore.load(new FileInputStream(ResourceUtils.getFile(file.getPath())), trustStorePassword.toCharArray());        // Set up key manager factory to use key-store        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());        keyManagerFactory.init(keyStore, trustStorePassword.toCharArray());        spec.sslContext(SslContextBuilder.forClient()                .keyManager(keyManagerFactory)                .build());      }catch(Exception e){        System.out.println("Error occurred");      }    });

But when trying to make the api call this is the exception that keeps coming

07-08-2024 19:19:33.018 [reactor-http-nio-4] [T:66b37b6c082adc435ef2af5d6cfda4f9,S:5ef2af5d6cfda4f9] INFO  c.a.t.s.d.ServiceImpl - Initiate Service B API call..07-08-2024 19:19:33.123 [reactor-http-nio-4] [T:,S:] ERROR reactor.core.publisher.Operators - Operator called default onErrorDroppedreactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.web.reactive.function.client.WebClientRequestException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetCaused by: org.springframework.web.reactive.function.client.WebClientRequestException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:136)    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s):    *__checkpoint ⇢ Request to GET https://localhost:9443/api [DefaultWebClient]Original Stack Trace:        at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:136)        at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)        at reactor.core.publisher.Mono.subscribe(Mono.java:4568)        at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)        at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)        at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)        at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)        at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)        at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:205)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.onError(FluxContextWriteRestoringThreadLocals.java:140)        at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)        at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:229)        at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:279)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.onError(FluxContextWriteRestoringThreadLocals.java:140)        at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.maybeOnError(FluxConcatMapNoPrefetch.java:327)        at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:212)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.onNext(FluxContextWriteRestoringThreadLocals.java:118)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.onNext(FluxContextWriteRestoringThreadLocals.java:118)        at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476)        at reactor.core.publisher.SinkManyEmitterProcessor$EmitterInner.drainParent(SinkManyEmitterProcessor.java:620)        at reactor.core.publisher.FluxPublish$PubSubInner.request(FluxPublish.java:874)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.request(FluxContextWriteRestoringThreadLocals.java:163)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.request(FluxContextWriteRestoringThreadLocals.java:163)        at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:337)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.request(FluxContextWriteRestoringThreadLocals.java:163)        at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1743)        at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:196)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.onError(FluxContextWriteRestoringThreadLocals.java:140)        at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:205)        at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)        at reactor.core.publisher.FluxContextWriteRestoringThreadLocals$ContextWriteRestoringThreadLocalsSubscriber.onError(FluxContextWriteRestoringThreadLocals.java:140)        at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:205)        at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onUncaughtException(DefaultPooledConnectionProvider.java:222)        at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnection.onUncaughtException(DefaultPooledConnectionProvider.java:476)        at reactor.netty.channel.ChannelOperationsHandler.exceptionCaught(ChannelOperationsHandler.java:148)        at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)        at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)        at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)        at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireExceptionCaught(CombinedChannelDuplexHandler.java:424)        at io.netty.channel.ChannelHandlerAdapter.exceptionCaught(ChannelHandlerAdapter.java:92)        at io.netty.channel.CombinedChannelDuplexHandler$1.fireExceptionCaught(CombinedChannelDuplexHandler.java:145)        at io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:143)        at io.netty.channel.CombinedChannelDuplexHandler.exceptionCaught(CombinedChannelDuplexHandler.java:231)        at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)        at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)        at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)        at reactor.netty.tcp.SslProvider$SslReadHandler.userEventTriggered(SslProvider.java:864)        at io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:398)        at io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:376)        at io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(AbstractChannelHandlerContext.java:368)        at io.netty.handler.ssl.SslHandler.handleUnwrapThrowable(SslHandler.java:1362)        at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1343)        at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)        at java.base/java.lang.Thread.run(Thread.java:840)Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1351)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1226)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1169)    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264)    at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209)    at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1651)    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1497)    at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)    at java.base/java.lang.Thread.run(Thread.java:840)Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)    at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)    at java.base/sun.security.validator.Validator.validate(Validator.java:264)    at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285)    at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1329)    ... 31 common frames omittedCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148)    at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129)    at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)    ... 36 common frames omitted07-08-2024 19:19:33.129 [reactor-http-nio-4] [T:,S:] WARN  r.n.http.client.HttpClientConnect - [7c2f3ab2, L:/127.0.0.1:51487 - R:localhost/127.0.0.1:9443] The connection observed an errorjavax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1351)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1226)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1169)    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264)    at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209)    at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1651)    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1497)    at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)    at java.base/java.lang.Thread.run(Thread.java:840)Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)    at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)    at java.base/sun.security.validator.Validator.validate(Validator.java:264)    at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285)    at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1329)    ... 31 common frames omittedCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148)    at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129)    at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)    ... 36 common frames omitted07-08-2024 19:19:33.135 [reactor-http-nio-4] [T:,S:] WARN  r.n.http.client.HttpClientConnect - [7c2f3ab2, L:/127.0.0.1:51487 ! R:localhost/127.0.0.1:9443] The connection observed an errorio.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:500)    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)    at java.base/java.lang.Thread.run(Thread.java:840)Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1351)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1226)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1169)    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264)    at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)    at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209)    at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1651)    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1497)    at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)    ... 17 common frames omittedCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)    at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)    at java.base/sun.security.validator.Validator.validate(Validator.java:264)    at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285)    at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144)    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1329)    ... 31 common frames omittedCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148)    at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129)    at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)    ... 36 common frames omitted

I was following this link for this implementation https://www.baeldung.com/spring-boot-https-self-signed-certificate and I see something similar RestTemplate implementation -

RestTemplate restTemplate() throws Exception {    SSLContext sslContext = new SSLContextBuilder()      .loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray())      .build();    SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);    HttpClient httpClient = HttpClients.custom()      .setSSLSocketFactory(socketFactory)      .build();    HttpComponentsClientHttpRequestFactory factory =       new HttpComponentsClientHttpRequestFactory(httpClient);    return new RestTemplate(factory);}

Can someone please point out if what I am doing is the standard way of achieving https for all my service


Viewing all articles
Browse latest Browse all 1553

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>