spring-cloud / spring-cloud-netflix

Integration with Netflix OSS components
http://cloud.spring.io/spring-cloud-netflix/
Apache License 2.0
4.88k stars 2.44k forks source link

Zuul RibbonRoutingFilter is throwing bad certificate for client auth enabled microservices #3046

Closed jaiananth closed 6 years ago

jaiananth commented 6 years ago

Hi,

Zuul RibbonRoutingFilter is throwing bad certificate error when routing to client auth enabled microservices.

Spring Boot: 15.13 Spring Cloud: Edgware.SR3

Error Message:

Root Cause ="{}"javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate[LF] at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)[LF] at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)[LF] at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)[LF] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)[LF] at sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1769)[LF] at sun.security.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:124)[LF] at sun.security.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:1083)[LF] at sun.security.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:1222)[LF] at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1134)[LF] at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:348)[LF] at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)[LF] at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)[LF] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)[LF] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)[LF] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)[LF] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)[LF] at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)[LF] at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)[LF] at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)[LF] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)[LF] at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)[LF] at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)[LF] at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)[LF] at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)[LF] at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)[LF] at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)[LF] at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)[LF] at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)[LF] at org.springframework.cloud.netflix.ribbon.apache.RetryableRibbonLoadBalancingHttpClient$1.doWithRetry(RetryableRibbonLoadBalancingHttpClient.java:138)[LF] at org.springframework.cloud.netflix.ribbon.apache.RetryableRibbonLoadBalancingHttpClient$1.doWithRetry(RetryableRibbonLoadBalancingHttpClient.java:120)[LF] at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:287)[LF] at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:180)[LF] at org.springframework.cloud.netflix.ribbon.apache.RetryableRibbonLoadBalancingHttpClient.executeWithRetry(RetryableRibbonLoadBalancingHttpClient.java:178)[LF] at org.springframework.cloud.netflix.ribbon.apache.RetryableRibbonLoadBalancingHttpClient.execute(RetryableRibbonLoadBalancingHttpClient.java:152)[LF] at org.springframework.cloud.netflix.ribbon.apache.RetryableRibbonLoadBalancingHttpClient.execute(RetryableRibbonLoadBalancingHttpClient.java:60)[LF] at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:104)[LF] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303)[LF] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287)[LF] at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:231)[LF] at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:228)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)[LF] at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)[LF] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185)[LF] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)[LF] at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.subscribe(Observable.java:10247)[LF] at rx.Observable.subscribe(Observable.java:10214)[LF] at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:444)[LF] at rx.observables.BlockingObservable.single(BlockingObservable.java:341)[LF] at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112)[LF] at org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand.run(AbstractRibbonCommand.java:187)[LF] at org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand.run(AbstractRibbonCommand.java:52)[LF] at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)[LF] at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)[LF] at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)[LF] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)[LF] at rx.Observable.unsafeSubscribe(Observable.java:10151)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)[LF] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)[LF] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)[LF] at rx.Observable.subscribe(Observable.java:10247)[LF] at rx.Observable.subscribe(Observable.java:10214)[LF] at rx.internal.operators.BlockingOperatorToFuture.toFuture(BlockingOperatorToFuture.java:51)[LF] at rx.observables.BlockingObservable.toFuture(BlockingObservable.java:411)[LF] at com.netflix.hystrix.HystrixCommand.queue(HystrixCommand.java:378)[LF] at com.netflix.hystrix.HystrixCommand.execute(HystrixCommand.java:344)[LF] at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:158)[LF] at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:111)[LF] at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:112)[LF] at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193)[LF] at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157)[LF] at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:118)[LF] at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:96)[LF] at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:116)[LF] at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:81)[LF] at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:157)[LF] at org.springframework.cloud.netflix.zuul.web.ZuulController.handleRequest(ZuulController.java:44)[LF] at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)[LF] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)[LF] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)[LF] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)[LF] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)[LF] at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)[LF] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)[LF] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.auth.filter.NetworkAccessControlFilter.doFilterInternal(NetworkAccessControlFilter.java:107)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:111)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.session.filter.CCPSessionRepositoryFilter.doFilterInternal(CCPSessionRepositoryFilter.java:98)[LF] at com.citigroup.ccp.session.filter.CCPOncePerRequestFilter.doFilter(CCPOncePerRequestFilter.java:49)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.psg.AccessOriginFilter.doFilterInternal(AccessOriginFilter.java:81)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:208)[LF] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)[LF] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)[LF] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.core.filter.HttpRequestProcessingFilter.doFilterInternal(HttpRequestProcessingFilter.java:54)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.logging.common.filter.LoggingContextFilter.doFilterInternal(LoggingContextFilter.java:103)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.core.multitenancy.filter.TenancyContextFilter.doFilterInternal(TenancyContextFilter.java:103)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.psg.AuthorizationTokenFilter.doFilterInternal(AuthorizationTokenFilter.java:130)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at com.citigroup.ccp.psg.DummyFilter.doFilter(DummyFilter.java:27)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)[LF] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[LF] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)[LF] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[LF] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)[LF] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[LF] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)[LF] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)[LF] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)[LF] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)[LF] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)[LF] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)[LF] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[LF] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)[LF] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)[LF] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)[LF] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[LF] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[LF] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)[LF] at java.lang.Thread.run(Thread.java:745)[LF]

ryanjbaxter commented 6 years ago

The certificate needs to be trusted by the JVM in order for the underlying Apache HTTP client to use it.

ryanjbaxter commented 6 years ago

For some reason the apache client does not think it is valid. There is nothing the Spring Cloud team can do to fix that.

jaiananth commented 6 years ago

Below are the observations.

1) We are passing the keystore and truststore to zuul proxy using below commands

-Djavax.net.ssl.truststoreType=PKCS12 -Djavax.net.ssl.trustStore=/apps/ssl/xxxxxxxp12 -Djavax.net.ssl.trustStorePassword=xxxxxx -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStore=/apps/ssl/xxxxxxp12 -Djavax.net.ssl.keyStorePassword=xxxxxx

2) Same settings is working for previous spring boot version 1.3.5 and issue only on latest spring boot version 1.5.13 and 1.5.12...

3) Certificate error only for RibbonRoutingFilter and CustomSimpleHostRoutingFilter is working fine

We aren't sure why we get the certificate error only on latest spring boot versions...Can you please help?

ryanjbaxter commented 6 years ago

If you can provide a reproducible example we can take a look.

jaiananth commented 6 years ago

Same issue is reported here as well https://github.com/spring-cloud/spring-cloud-netflix/issues/2759

...Do we have permanent fix for this? or we need to provide custom HttpClient ?

ryanjbaxter commented 6 years ago

Provide your own HttpClient bean.