Trasa SOCKS dla FTPSClient z Commons Net
Użyj interfejsu socket proxy z Commons Net dla FTPS, zachowując nazwę hosta serwera, pasywne połączenia danych i weryfikację TLS.
Gdy dostępny jest pośrednik SOCKS, FTPSClient z Commons Net może użyć odziedziczonego interfejsu socket proxy. Zachowaj serwer FTPS jako cel połączenia:
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);
To rozpoczyna jawne połączenie FTPS. Aplikacja nadal odpowiada za logowanie, negocjację ochrony danych, obsługę transferu i rozłączenie. Ustawienie null trust manager wybiera domyślne trust managery JVM zamiast kontroli certyfikatu tylko po dacie w Commons Net. Użyj zamierzonego trust store i nazwy hosta z certyfikatu serwera.
Przy transferach pasywnych obecna implementacja FTPSClient tworzy także swój socket danych przez skonfigurowane proxy, a następnie dodaje warstwę TLS. Po zalogowaniu użyj trybu pasywnego i wynegocjuj wymagany chroniony kanał danych przez zwykłe API FTPS. Udane połączenie kontrolne nie wykonuje tej pracy; pasywne połączenie danych pozostaje osobną ścieżką.
Kod zakłada usługę SOCKS bez dodatkowego konta. Obsługa uwierzytelniania wymaga osobnego przeglądu dla wybranego środowiska Java i wdrożenia.
To nie jest interfejs HTTP CONNECT z FTPHTTPClient. Ten brat obsługuje zwykły FTP przez tunel HTTP; zmiana jego portu nie dodaje FTPS. Jeśli sieć pozwala tylko na proxy HTTP, wybierz implementację FTPS lub utrzymywaną adaptację obsługującą CONNECT na ścieżce kontrolnej i danych.
Zachowaj konfigurację proxy przez cały cykl życia klienta i przejrzyj ją przed ponownym połączeniem użytej instancji: rozłączenie FTPS resetuje fabryki socketów. Nie zastępuj kontroli certyfikatów menedżerem pełnego zaufania, aby trasa wyglądała na udaną.