http4component Proxy + SSL error in the request to the external service

Asked

Viewed 33 times

0

Speak class, speak class, I’m using Apache Camel in my project to do an integration. At first I was making a connection with an external service with certificate, working locally, when deploying on the server there was the need to add the proxy server ip. With that Camel doesn’t seem to take the configuration of the certificate anymore, I looked for something to work the two and did not find. I need a help for the operation of both.

Certificate configuration:

    protected void configureSslForHttp4()
    {
        KeyStoreParameters trust_ksp = new KeyStoreParameters();
        trust_ksp.setResource(config.getKeyStore());
        trust_ksp.setPassword(config.getKeyStorePassword());

        KeyManagersParameters kmp = new KeyManagersParameters();
        kmp.setKeyStore(trust_ksp);
        kmp.setKeyPassword(config.getKeyStorePassword());

        SSLContextParameters scp = new SSLContextParameters();
        scp.setKeyManagers(kmp);

        HttpComponent httpComponent = getContext().getComponent("https4", HttpComponent.class);
        httpComponent.setSslContextParameters(scp);

    }

Settings to add proxy:

  • Proxyhost = 172.0.0.1
  • Proxyport: 8085
getContext().getGlobalOptions().put("http.proxyHost", config.getProxyHost());
getContext().getGlobalOptions().put("http.proxyPort", config.getProxyPort());

When running the log is displayed:

o.a.h.i.c.PoolingHttpClientConnectionManager - Connection released: [id: 20][route: {tls}->https://172.0.0.1:8085->https://servicosexterno.com.br:443][total available: 0; route allocated: 0 of 20; total allocated: 0 of 200]
o.a.c.processor.DefaultErrorHandler - Failed delivery for (MessageId: ID-1771a9a38dc3-1593470960512-0-47 on ExchangeId: ID-1771a9a38dc3-1593470960512-0-46). On delivery attempt: 0 caught: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
o.a.c.processor.DefaultErrorHandler - Failed delivery for (MessageId: ID-1771a9a38dc3-1593470960512-0-47 on ExchangeId: ID-1771a9a38dc3-1593470960512-0-46). Exhausted after delivery attempt: 1 caught: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake


javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:401)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
    at org.apache.camel.component.http4.HttpProducer.executeMethod(HttpProducer.java:334)
    at org.apache.camel.component.http4.HttpProducer.process(HttpProducer.java:193)
    at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
    at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76)
    at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:715)
    at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:638)
    at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:248)
    at org.apache.camel.processor.Splitter.process(Splitter.java:129)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76)
    at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197)
    at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:79)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at sun.security.ssl.InputRecord.read(InputRecord.java:505)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
    ... 53 common frames omitted

1 answer

0


I found the answer, so that the context already configured in http4 should be sent to the proxy as well, as follows:

proxyAuthScheme (proxy) | Proxy Authentication Scheme to use. The value can be one of: http, https

So my link went like this:

  • https4://servicosexterno.com.br:443? proxyAuthScheme=http4

Here it is the link from the source where I found the answer.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.