Why recieving error message- `handshake_failure. Code: 234` with camel FTPS component ?

Solution Verified - Updated -

Issue

  • I'm using the camel-ftp component to do ftp over ssl (ftps) i can see the connection from the endpoint to the SFTPPlus server in a tcpdump and i can see a client hello and a server hello and the server sends its certificate, but the connection is closed as the client is not sending its certificate back to the server.

  • I would expect it to send it back automatically, but is there any option that need to be set to force the component to send its certificate?

  • Error logs

2015-10-08 21:21:20,437 | WARN  | xxx/yyy/zzz | FtpConsumer                      | rg.apache.camel.util.CamelLogger  224 | 141 - org.apache.camel.camel-core - 2.15.3 | Consumer FtpConsumer[ftps://devops@HOSTNAME:15030/xxx/yyy/zzz?binary=false&delay=5000&delete=true&passiveMode=true&password=xxxxxx&readLock=rename&securityProtocol=TLS&throwExceptionOnConnectFailed=true] failed polling endpoint: Endpoint[ftps://devops@HOSTNAME:15030/var/sftpplus/test?binary=false&delay=5000&delete=true&passiveMode=true&password=xxxxxx&readLock=rename&securityProtocol=TLS&throwExceptionOnConnectFailed=true]. Will try again at next poll. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - File operation failed: 234 Security data exchange complete.
 Received fatal alert: handshake_failure. Code: 234]
org.apache.camel.component.file.GenericFileOperationFailedException: File operation failed: 234 Security data exchange complete.
 Received fatal alert: handshake_failure. Code: 234
    at org.apache.camel.component.file.remote.FtpOperations.connect(FtpOperations.java:117)[143:org.apache.camel.camel-ftp:2.15.3]
    at org.apache.camel.component.file.remote.FtpsOperations.connect(FtpsOperations.java:40)[143:org.apache.camel.camel-ftp:2.15.3]
    at org.apache.camel.component.file.remote.RemoteFileConsumer.connectIfNecessary(RemoteFileConsumer.java:203)[143:org.apache.camel.camel-ftp:2.15.3]
    at org.apache.camel.component.file.remote.RemoteFileConsumer.recoverableConnectIfNecessary(RemoteFileConsumer.java:183)[143:org.apache.camel.camel-ftp:2.15.3]
    at org.apache.camel.component.file.remote.RemoteFileConsumer.prePollCheck(RemoteFileConsumer.java:59)[143:org.apache.camel.camel-ftp:2.15.3]
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:106)[141:org.apache.camel.camel-core:2.15.3]
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)[141:org.apache.camel.camel-core:2.15.3]
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)[141:org.apache.camel.camel-core:2.15.3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_75]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)[:1.7.0_75]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)[:1.7.0_75]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.7.0_75]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_75]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_75]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_75]
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)[:1.7.0_75]
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1725)[:1.7.0_75]
    at sun.security.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:122)[:1.7.0_75]
    at sun.security.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:1005)[:1.7.0_75]
    at sun.security.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:1161)[:1.7.0_75]
    at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1073)[:1.7.0_75]
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:341)[:1.7.0_75]
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)[:1.7.0_75]
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)[:1.7.0_75]
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)[:1.7.0_75]
    at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:269)[135:org.apache.commons.net:3.3.0]
    at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:211)[135:org.apache.commons.net:3.3.0]
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:183)[135:org.apache.commons.net:3.3.0]
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:203)[135:org.apache.commons.net:3.3.0]
    at org.apache.camel.component.file.remote.FtpOperations.connect(FtpOperations.java:96)[143:org.apache.camel.camel-ftp:2.15.3]
    ... 14 more

Environment

  • Red Hat JBoss Fuse
    • 6.1.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content