小编mpe*_*old的帖子

如何建立与 FileZilla Server 1.2.0 的 FTPS 数据连接

使用 Apache commons-net 的 Java FTPSClient 进行会话恢复是一个已知问题。会话恢复是 FTPS 服务器数据连接所需的一项安全功能。Apache FTPSClient 不支持会话恢复,并且 JDK API 使得构建自定义实现变得困难。有一些使用反射的解决方法,请参阅此答案和此commons-net bug 条目。

我在 JDK 11 中使用了这样的解决方法(请参阅下面的片段),并针对本地 FileZilla 服务器对其进行了测试。它适用于 FileZilla Server 0.9.6,但不适用于 FileZilla Server 1.2.0,这是撰写本文时的最新版本。在该版本中,当尝试建立数据连接时,服务器会响应:

425 Unable to build data connection: TLS session of data connection not resumed.
Run Code Online (Sandbox Code Playgroud)

正如我所说,FileZilla Server 0.9.6 适合我进行会话恢复的方式,并且我确保激活了要求会话恢复的设置。

在 FileZilla Server 1.2.0 中,此类设置现在是隐式设置的,无法通过 GUI 更改,也许根本不能更改。我可以调整一些服务器设置才能使其正常工作吗?或者是我如何实施解决方法的问题?有人遇到类似的问题吗?

这是我正在使用的解决方法:

public class FTPSClientWithSessionResumption extends FTPSClient {

    static {
        System.setProperty("jdk.tls.useExtendedMasterSecret", "false");
        System.setProperty("jdk.tls.client.enableSessionTicketExtension", "false");
    }

    @Override
    protected void _connectAction_() throws IOException {
        super._connectAction_();
        execPBSZ(0);
        execPROT("P"); …
Run Code Online (Sandbox Code Playgroud)

java filezilla ftps apache-commons-net session-reuse

5
推荐指数
1
解决办法
2386
查看次数