Una rotta SOCKS per FTPSClient di Commons Net
Usate l’interfaccia socket proxy di Commons Net per FTPS conservando il nome host del server, le connessioni dati passive e la verifica TLS.
Quando è disponibile un intermediario SOCKS, FTPSClient di Commons Net può usare l’interfaccia socket proxy ereditata. Mantenete il server FTPS come destinazione della connessione:
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);
Questo avvia una connessione FTPS esplicita. L’applicazione gestisce ancora accesso, negoziazione della protezione dei dati, gestione del trasferimento e disconnessione. L’impostazione null del trust manager seleziona i gestori di fiducia predefiniti della JVM anziché il controllo del certificato basato solo sulla data di Commons Net. Usate il trust store previsto e il nome host del certificato del server.
Per i trasferimenti passivi, l’attuale implementazione di FTPSClient crea il socket dati anche attraverso il proxy configurato, poi aggiunge il livello TLS. Dopo l’accesso, usate la modalità passiva e negoziate il canale dati protetto necessario tramite la normale API FTPS. Una connessione di controllo riuscita non completa quel lavoro; la connessione dati passiva resta un percorso separato.
Il codice presuppone un servizio SOCKS senza un account aggiuntivo. Il supporto all’autenticazione richiede una verifica separata per il runtime Java e la distribuzione scelti.
Questa non è l’interfaccia HTTP CONNECT di FTPHTTPClient. Quel fratello gestisce FTP ordinario su un tunnel HTTP; cambiare la sua porta non aggiunge FTPS. Se la rete consente solo un proxy HTTP, scegliete un’implementazione FTPS o un adattamento mantenuto che supporti CONNECT sia sul percorso di controllo sia su quello dati.
Conservate la configurazione del proxy per tutto il ciclo di vita del client e riesaminatela prima di riconnettere un’istanza riutilizzata: la disconnessione FTPS reimposta le fabbriche di socket. Non sostituite i controlli dei certificati con un trust-all manager per far sembrare riuscita la rotta.