SOCKS cesta pro FTPSClient z Commons Net
Použijte rozhraní socket proxy z Commons Net pro FTPS se zachováním názvu hostitele serveru, pasivních datových spojení a ověřování TLS.
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á.