O rută SOCKS pentru FTPSClient din Commons Net
Folosiți interfața socket proxy din Commons Net pentru FTPS păstrând numele de gazdă al serverului, conexiunile de date pasive și verificarea TLS.
Când este disponibil un intermediar SOCKS, FTPSClient din Commons Net poate folosi interfața socket proxy moștenită. Păstrați serverul FTPS ca destinație a conexiunii:
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);
Aceasta pornește o conexiune FTPS explicită. Aplicația rămâne responsabilă de autentificare, negocierea protecției datelor, gestionarea transferului și deconectare. Setarea null trust manager selectează managerii de încredere impliciți ai JVM-ului în locul verificării certificatului doar după dată din Commons Net. Folosiți trust store-ul prevăzut și numele de gazdă din certificatul serverului.
Pentru transferurile pasive, implementarea actuală a FTPSClient creează și socketul de date prin proxy-ul configurat, apoi adaugă stratul TLS. După autentificare, folosiți modul pasiv și negociați canalul de date protejat necesar prin API-ul FTPS obișnuit. O conexiune de control reușită nu finalizează această muncă; conexiunea de date pasivă rămâne o cale separată.
Codul presupune un serviciu SOCKS fără un cont suplimentar. Suportul pentru autentificare necesită o analiză separată pentru mediul de execuție Java și implementarea alese.
Aceasta nu este interfața HTTP CONNECT a FTPHTTPClient. Fratele respectiv gestionează FTP obișnuit printr-un tunel HTTP; schimbarea portului său nu adaugă FTPS. Dacă rețeaua permite doar un proxy HTTP, alegeți o implementare FTPS sau o adaptare întreținută care acceptă CONNECT atât pe calea de control, cât și pe cea de date.
Păstrați configurația proxy pe tot ciclul de viață al clientului și revizuiți-o înainte de a reconecta o instanță reutilizată: deconectarea FTPS resetează fabricile de socketuri. Nu înlocuiți verificările certificatelor cu un trust-all manager pentru ca ruta să pară reușită.