Když je k dispozici prostředník SOCKS, může FTPSClient z Commons Net použít zděděné rozhraní socket proxy. Ponechte server FTPS jako cíl připojení:

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 se zahájí explicitní připojení FTPS. Aplikace stále zajišťuje přihlášení, vyjednání ochrany dat, správu přenosu a odpojení. Nastavení null trust manageru vybere výchozí trust managery JVM místo kontroly certifikátu pouze podle data v Commons Net. Použijte zamýšlené úložiště důvěry a název hostitele certifikátu serveru.

U pasivních přenosů vytváří současná implementace FTPSClient i svůj datový socket přes nakonfigurovaný proxy a poté přidá vrstvu TLS. Po přihlášení použijte pasivní režim a vyjednejte požadovaný chráněný datový kanál prostřednictvím běžného API FTPS. Úspěšné řídicí spojení tuto práci nedokončí; pasivní datové spojení zůstává samostatnou cestou.

Kód předpokládá službu SOCKS bez dalšího účtu. Podpora ověřování vyžaduje samostatné posouzení pro zvolené běhové prostředí Java a nasazení.

Toto není rozhraní HTTP CONNECT z FTPHTTPClient. Tento sourozenec zpracovává běžné FTP přes tunel HTTP; změna jeho portu FTPS nepřidá. Pokud síť povoluje pouze HTTP proxy, zvolte implementaci FTPS nebo udržovanou úpravu, která podporuje CONNECT na řídicí i datové cestě.

Ponechte konfiguraci proxy po celou dobu životnosti klienta a před opětovným připojením znovu použité instance ji zkontrolujte: odpojení FTPS resetuje továrny socketů. Nenahrazujte kontroly certifikátů trust-all managerem, jen aby se cesta zdála úspěšná.

Související články