如何通过弹簧集成使用tls身份验证通过ftp下载文件

时间:2016-11-21 14:13:11

标签: java ssl spring-integration ftps

我在TLS身份验证时无法从ftp服务器下载该文件。我已经使用DefaultFtpsSessionFactory会话进行TLS身份验证.EveryTIme轮询已启动"在握手期间发生错误"。

虽然我可以通过普通的java类使用apache.common.net的FTPSClient下载文件。

我的xml配置如下: -

<bean id="ftpClientFactory"
        class="org.springframework.integration.ftp.session.DefaultFtpsSessionFactory">
        <property name="host" value="52.172.153.35"/>
        <property name="port" value="21"/>
        <property name="username" value=""/>
        <property name="password" value=""/>
        <property name="clientMode" value="2"/>
        <property name="bufferSize" value="100000"/>

<int-ftp:inbound-channel-adapter id="plannedFtpChannel" 
        session-factory="ftpClientFactory" filename-pattern="*.xls" local-filter="plannedFilter" auto-startup="true"
        auto-create-local-directory="true" delete-remote-files="false" remote-directory="/planned" local-directory="/DataFiles/planned" >
        <int:poller fixed-delay="10000">
        </int:poller>
</int-ftp:inbound-channel-adapter>

我得到的错误如下: -

taskScheduler-6,收到EOFException:error taskScheduler-6,处理异常:javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接%%无效:[Session-4,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384] taskScheduler-6,SEND TLSv1。 2 ALERT:致命,描述= handshake_failure

taskScheduler-2,READ:TLSv1.2应用程序数据,长度= 160 DECRYPTION后的填充明文:len = 160 0000:D8 BE B6 80 50 63 4A A1 EA 00 DA A8 97 03 9D 39 .... PcJ ........ 9 0010:34 35 30 20 54 4C 53 20 73 65 73 73 69 6F 6E 20 450 TLS会话 0020:6F 66 20 64 61 74 61 20 63 6F 6E 6E 65 63 74 69数据连接 0030:6F 6E 20 68 61 73 20 6E 6F 74 20 72 65 73 75 6D on未重新打印 0040:65 64 20 6F 72 20 74 68 65 20 73 65 73 73 69 6F或sessio 0050:6E 20 64 6F 65 73 20 6E 6F 74 20 6D 61 74 63 68 n不匹配 0060:20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 63 6F 6E控制装置 0070:6E 65 63 74 69 6F 6E 0D 0A 4A BA 0F 0F 95 88 44 ... J ..... D 0080:8E B4 90 D0 02 B1 1C DC 78 E1 76 C1 ED BA 2F 82 ........ x.v ... /。 0090:3A 19 0B FA F2 09 61 6C FB 06 06 06 06 06 06 06:..... al ........ taskScheduler-2,收到EOFException:忽略 taskScheduler-2,名为closeInternal(false) taskScheduler-2,再次关闭; state = 5

这里我需要用Google搜索来启用会话重用。 但是,不能这样做! 任何建议。

1 个答案:

答案 0 :(得分:0)

这里我们必须覆盖DefaultFtpssessionFactory的getSession()和createClient(),以实现自定义的FTPSClient。它的配置工作正常。