Cuando hay disponible un intermediario SOCKS, FTPSClient de Commons Net puede usar la interfaz de proxy de sockets heredada. Mantenga el servidor FTPS como destino de la conexión:

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);

Esto inicia una conexión FTPS explícita. La aplicación sigue encargándose del inicio de sesión, la negociación de la protección de datos, la gestión de la transferencia y la desconexión. El ajuste nulo de trust manager selecciona los gestores de confianza predeterminados de la JVM en lugar de la comprobación de certificados solo por fecha de Commons Net. Use el almacén de confianza previsto y el nombre de host del certificado del servidor.

En las transferencias pasivas, la implementación actual de FTPSClient también crea su socket de datos a través del proxy configurado y luego añade la capa TLS. Tras iniciar sesión, use el modo pasivo y negocie el canal de datos protegido necesario mediante la API normal de FTPS. Una conexión de control correcta no completa ese trabajo; la conexión de datos pasiva sigue siendo una ruta aparte.

El código supone un servicio SOCKS sin una cuenta adicional. La compatibilidad con la autenticación necesita una revisión aparte para el entorno de ejecución Java y el despliegue elegidos.

Esta no es la interfaz HTTP CONNECT de FTPHTTPClient. Ese hermano gestiona FTP normal sobre un túnel HTTP; cambiar su puerto no añade FTPS. Si la red solo permite un proxy HTTP, elija una implementación de FTPS o una adaptación mantenida que admita CONNECT tanto en la ruta de control como en la de datos.

Conserve la configuración del proxy durante todo el ciclo de vida del cliente y revísela antes de volver a conectar una instancia reutilizada: la desconexión de FTPS reinicia las fábricas de sockets. No sustituya las comprobaciones de certificados por un gestor de confianza total para que la ruta parezca correcta.

Artículos relacionados