Keď je dostupný sprostredkovateľ SOCKS, FTPSClient z Commons Net môže použiť zdedené rozhranie socket proxy. Ponechajte server FTPS ako cieľ pripojenia:

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

Tým sa začne explicitné pripojenie FTPS. Aplikácia stále zabezpečuje prihlásenie, vyjednanie ochrany údajov, správu prenosu a odpojenie. Nastavenie null trust manager vyberie predvolené trust managery JVM namiesto kontroly certifikátu iba podľa dátumu v Commons Net. Použite zamýšľané úložisko dôvery a názov hostiteľa certifikátu servera.

Pri pasívnych prenosoch vytvára súčasná implementácia FTPSClient aj svoj dátový socket cez nakonfigurované proxy a potom pridá vrstvu TLS. Po prihlásení použite pasívny režim a vyjednajte požadovaný chránený dátový kanál prostredníctvom bežného API FTPS. Úspešné riadiace spojenie túto prácu nedokončí; pasívne dátové spojenie zostáva samostatnou cestou.

Kód predpokladá službu SOCKS bez ďalšieho účtu. Podpora overovania si vyžaduje samostatné posúdenie pre zvolené bežové prostredie Java a nasadenie.

Toto nie je rozhranie HTTP CONNECT z FTPHTTPClient. Ten súrodenec spracúva bežné FTP cez tunel HTTP; zmena jeho portu nepridá FTPS. Ak sieť povoľuje iba HTTP proxy, zvoľte implementáciu FTPS alebo udržiavanú úpravu, ktorá podporuje CONNECT na riadiacej aj dátovej ceste.

Ponechajte konfiguráciu proxy počas celého životného cyklu klienta a pred opätovným pripojením znovu použitej inštancie ju skontrolujte: odpojenie FTPS resetuje továrne socketov. Nenahrádzajte kontroly certifikátov trust-all managerom, len aby sa cesta zdala úspešná.

Súvisiace články