Android FTPS 上传问题:“425 无法建立数据连接:数据连接的 TLS 会话未恢复”

问题描述 投票:0回答:1

在我的 Android 应用程序中,我尝试连接并将文件上传到我的 FTPS 服务器(使用端口 21),这本质上是带有 TLS 的 FTP。该服务器是 FileZilla 服务器,可以与 FileZilla 客户端完美配合。我正在为 FTPS 客户端使用以下库:

梯度

implementation 'commons-net:commons-net:3.11.1' // FTP

但是,当我在连接并登录后尝试列出目录或列出名称时,遇到以下错误:

425 无法建立数据连接:数据连接的 TLS 会话未恢复。

根据我的研究,我发现 Apache Commons Net 库不支持 TLS 连接恢复,这是重用相同的 TLS 会话进行安全文件传输所必需的。

我遇到了这个 StackOverflow 线程:如何使用相同的 TLS 会话通过数据连接连接到 FTPS 服务器?并且已经尝试实施那里提到的解决方案,但它们对我不起作用。

我尝试了几种解决方案,包括:

  1. https://eng.wealthfront.com/2016/06/10/connecting-to-an-ftps-server-with-ssl-session-reuse-in-java-7-and-8/

面对错误(类Lcom/android/org/conscrypt/ClientSessionContext中没有字段sessionByHostAndPort;(“com.android.org.conscrypt.ClientSessionContext”的声明出现在/apex/com.android.conscrypt/javalib/conscrypt.jar中) ))

  1. 使用 BouncyCastle 进行 TLS:

梯度

implementation 'org.bouncycastle:bctls-jdk18on:1.78.1'

但是,这并没有解决问题。

  1. 重写 FTPSClient 的
    _prepareDataSocket_
    方法,但这也没有按预期工作。

鉴于我的 FTPS 客户端正在为每个文件传输创建一个新的 TLS 会话,而服务器希望重用与控制连接相同的安全会话,我正在寻找有关如何为数据连接或任何其他连接维护相同 TLS 会话的指导。其他可以帮助解决此问题的解决方案。

android ftp bouncycastle filezilla apache-commons-net
1个回答
0
投票

对于每个面临同样问题的人来说,我花了2-3天的时间通过Stack Overflow搜索、阅读博客等终于找到了解决方案。我从Stack Overflow上的ferpalos的回答得到了帮助。但是,我还必须按照 TomInCode 的建议添加 RestrictionBypass 依赖项。现在,连接问题已解决。但是,我仍然不确定使用 RestrictionBypass 是否完全安全。

© www.soinside.com 2019 - 2024. All rights reserved.