I am busy with a project where I have to do a GET on an exposed rest service using specific certificates. I am using the apache camel framework with the https4 component. I created a keystore and tested it using soapUI and it connected successfully, but I am however unable to connect through my project.
I used the following page as reference: http://camel.apache.org/http4.html
I set up the SSL for the HTTP Client through the following configuration:
<spring:sslContextParameters id="sslContextParameters"><spring:keyManagers keyPassword="xxxx"><spring:keyStore resource="classpath:certificates/keystore.jks" password="xxxx"/></spring:keyManagers></spring:sslContextParameters><setHeader headerName="CamelHttpMethod"><simple>GET</simple></setHeader>
My endpoint is configured as:
<to uri="https4://endpointUrl:9007/v1/{id}?sslContextParametersRef=sslContextParameters"/>
The stacktrace I am receiving:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat sun.security.ssl.Alerts.getSSLException(Alerts.java:192)at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)at org.apache.camel.component.http4.HttpProducer.executeMethod(HttpProducer.java:301)at org.apache.camel.component.http4.HttpProducer.process(HttpProducer.java:173)at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)at org.apache.camel.impl.InterceptSendToEndpoint$1.process(InterceptSendToEndpoint.java:164)at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117)at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)at org.apache.camel.processor.Pipeline.access$100(Pipeline.java:44)at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:139)at org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:257)at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:480)at org.apache.camel.processor.interceptor.TraceInterceptor$1.done(TraceInterceptor.java:180)at org.apache.camel.processor.SendProcessor$1.done(SendProcessor.java:155)at org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:257)at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)at org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:257)at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:480)at org.apache.camel.processor.interceptor.TraceInterceptor$1.done(TraceInterceptor.java:180)at org.apache.camel.processor.SendProcessor$1.done(SendProcessor.java:155)at org.apache.camel.component.cxf.CxfClientCallback.handleResponse(CxfClientCallback.java:61)at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:827)at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1672)at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1168)at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)at java.lang.Thread.run(Thread.java:745)
Any help would be much appreciated !