SOCKS ruta za Commons Net FTPSClient
Koristite Commons Net sučelje socket-proxy za FTPS uz očuvanje imena hosta poslužitelja, pasivnih podatkovnih veza i TLS provjere.
Kada je dostupan SOCKS posrednik, FTPSClient iz Commons Neta može koristiti naslijeđeno sučelje socket-proxy. Zadržite FTPS poslužitelj kao odredište veze:
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);
Time započinje eksplicitna FTPS veza. Aplikacija i dalje upravlja prijavom, pregovaranjem o zaštiti podataka, rukovanjem prijenosom i odspajanjem. Postavka null trust manager odabire zadane JVM trust managere umjesto Commons Netove provjere certifikata samo po datumu. Koristite predviđeno trust store i ime hosta iz certifikata poslužitelja.
Za pasivne prijenose trenutna implementacija FTPSClienta stvara i svoj data socket kroz konfigurirani proxy, a zatim dodaje TLS sloj. Nakon prijave koristite pasivni način rada i pregovarajte potrebni zaštićeni podatkovni kanal kroz uobičajeni FTPS API. Uspješna kontrolna veza ne obavlja taj posao; pasivna podatkovna veza ostaje zaseban put.
Kôd pretpostavlja SOCKS uslugu bez dodatnog računa. Podrška za autentifikaciju zahtijeva zaseban pregled za odabrano Java okruženje i implementaciju.
Ovo nije HTTP CONNECT sučelje FTPHTTPClienta. Taj rođak obrađuje obični FTP kroz HTTP tunel; promjena njegovih vrata ne dodaje FTPS. Ako mreža dopušta samo HTTP proxy, odaberite FTPS implementaciju ili održavanu prilagodbu koja podržava CONNECT i na kontrolnom i na podatkovnom putu.
Zadržite proxy konfiguraciju tijekom cijelog životnog ciklusa klijenta i pregledajte je prije ponovnog povezivanja ponovno korištene instance: odspajanje FTPS-a resetira tvornice socketa. Ne zamjenjujte provjere certifikata trust-all managerom da bi ruta izgledala uspješno.