Kada je dostupan SOCKS posrednik, FTPSClient iz Commons Neta može koristiti naslijeđeni interfejs socket-proxy. Zadržite FTPS server kao odredište konekcije:

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

Ovo pokreće eksplicitnu FTPS konekciju. Aplikacija i dalje upravlja prijavom, pregovaranjem o zaštiti podataka, rukovanjem prenosom i odspajanjem. Postavka null trust manager bira podrazumevane trust managere JVM-a umesto Commons Net provere sertifikata samo po datumu. Koristite predviđeni trust store i ime hosta iz sertifikata servera.

Za pasivne prenose trenutna implementacija FTPSClient kreira i svoj data socket kroz konfigurisani proxy, a zatim dodaje TLS sloj. Nakon prijave koristite pasivni režim i pregovarajte potrebni zaštićeni data kanal kroz uobičajeni FTPS API. Uspešna kontrolna konekcija ne obavlja taj posao; pasivna data konekcija ostaje zaseban put.

Kod pretpostavlja SOCKS servis bez dodatnog naloga. Podrška za autentifikaciju zahteva odvojen pregled za izabrano Java okruženje i implementaciju.

Ovo nije HTTP CONNECT interfejs FTPHTTPClient-a. Taj rođak obrađuje obični FTP kroz HTTP tunel; promena njegovog porta ne dodaje FTPS. Ako mreža dozvoljava samo HTTP proxy, izaberite FTPS implementaciju ili održavanu prilagodbu koja podržava CONNECT i na kontrolnom i na data putu.

Zadržite proxy konfiguraciju tokom celog životnog ciklusa klijenta i pregledajte je pre ponovnog povezivanja ponovo korišćene instance: odspajanje FTPS-a resetuje socket fabrike. Ne zamenjujte provere sertifikata trust-all managerom da bi ruta izgledala uspešno.

Povezani članci