Quando um intermediário SOCKS está disponível, o FTPSClient da Commons Net pode usar a interface de proxy de sockets herdada. Mantenha o servidor FTPS como destino da conexão:

var client = new org.apache.commons.net.ftp.FTPSClient(false);
client.setProxy(new java.net.Proxy(
    java.net.Proxy.Type.SOCKS,
    new java.net.InetSocketAddress("proxy.example", 1080)));
client.setTrustManager(null);
client.setEndpointCheckingEnabled(true);
client.setConnectTimeout(10000);
client.connect("ftps.example", 21);

Isto inicia uma conexão FTPS explícita. A aplicação continua responsável pelo login, pela negociação da proteção de dados, pelo tratamento da transferência e pela desconexão. A definição nula de trust manager seleciona os gestores de confiança predefinidos da JVM em vez da verificação de certificado apenas por data da Commons Net. Use o armazenamento de confiança pretendido e o nome de host do certificado do servidor.

Nas transferências passivas, a implementação atual do FTPSClient também cria o seu socket de dados através do proxy configurado e depois adiciona a camada TLS. Após o login, use o modo passivo e negoceie o canal de dados protegido necessário através da API normal do FTPS. Uma conexão de controlo bem-sucedida não conclui esse trabalho; a conexão de dados passiva continua a ser um caminho separado.

O código pressupõe um serviço SOCKS sem conta adicional. O suporte de autenticação precisa de revisão separada para o runtime Java e a implantação escolhidos.

Esta não é a interface HTTP CONNECT do FTPHTTPClient. Esse irmão trata FTP comum através de um túnel HTTP; mudar a sua porta não acrescenta FTPS. Se a rede só permitir um proxy HTTP, escolha uma implementação de FTPS ou uma adaptação mantida que suporte CONNECT tanto no caminho de controlo como no de dados.

Mantenha a configuração do proxy durante todo o ciclo de vida do cliente e reveja-a antes de reconectar uma instância reutilizada: a desconexão FTPS reinicia as fábricas de sockets. Não substitua as verificações de certificados por um gestor de confiança total para fazer a rota parecer bem-sucedida.

Artigos relacionados