【问题标题】:Connect to FTPS through proxy通过代理连接到 FTPS
【发布时间】:2023-03-16 23:06:01
【问题描述】:

我们最初遇到的问题是,由于服务器证书不受信任,常规 FTP 下载开始失败。这促使我们想知道证书是否在没有对方通知我们的情况下更新,因此我们想下载当前证书并将其与我们的密钥库中的证书进行比较。

这似乎是一个比我们预期的更棘手的问题。通常的嫌疑人(firefox,filezilla,...)似乎无法完成通过 FTP 代理连接到 FTP 服务器的任务,所以出于好奇,我开始尝试使用更底层的 java 方法。不过,我这辈子都做不到。

第一次(过于简单化)java 尝试:

    // create proxy connection
    SocketFactory plainFactory = SocketFactory.getDefault();
    Socket proxy = plainFactory.createSocket(proxyServer, proxyPort);

    // create ssl connection on top of it?
    SSLSocketFactory sslFactory = getSocketFactory();
    SSLSocket socket = (SSLSocket) sslFactory.createSocket(proxy, server, port, true);

这种方法显然行不通。

接下来我开始使用 ftp4j (http://www.sauronsoftware.it/projects/ftp4j/),它似乎有一个干净且易于访问的代码库:

    FTPClient client = new FTPClient();
    client.setConnector(new FTPProxyConnector(proxyHost, proxyPort));
    client.getConnector().setConnectionTimeout(0);
    client.getConnector().setReadTimeout(0);
    client.setSSLSocketFactory(getSocketFactory());
    // also tried SECURITY_FTPS
    client.setSecurity(FTPClient.SECURITY_FTPES);
    client.connect(server, port);

这个输出:

REPLY: 220 Blue Coat FTP Service
SEND: USER anonymous
REPLY: 530-User Access denied.
REPLY: 530-
REPLY: 530-Usage: USER username@hostname
REPLY: 331        PASS userpassword
Exception in thread "main" java.io.IOException: Invalid proxy response

代理服务器具有可选的身份验证,在我们的开发服务器上,我们通常使用“user@host”而不使用代理身份验证。因此,我假设用户名、主机名和密码是远程服务器的用户名、主机名和密码?

所以我尝试添加远程参数,这不起作用:

REPLY: 220 Blue Coat FTP Service
SEND: USER test@ftps.example.com
Exception in thread "main" java.io.IOException: FTPConnection closed

添加代理用户以匹配 bluecoat 格式似乎也不起作用:

USER %u@%h %s
PASS %p
ACCT %w

欢迎对这两个问题提供任何帮助:

  • 如何通过 ftp 代理从 ftps 服务器检索服务器证书
  • 如何通过 java 中的 ftp 代理连接到 ftps 服务器

【问题讨论】:

    标签: java ftps


    【解决方案1】:

    您可能想尝试 Apache Net 公共库。

    这是一个使用 Net Commons 库的 similar 线程

    Net commons 还有一个功能齐全的 FTP 客户端Example,因此您可以使用您知道有效的东西进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2011-01-04
      • 2023-03-16
      • 2022-10-26
      • 2015-07-10
      • 2014-07-17
      相关资源
      最近更新 更多