Een SOCKS-route voor de FTPSClient van Commons Net
Gebruik de socket-proxy-interface van Commons Net voor FTPS en behoud de hostnaam van de server, passieve dataconnecties en TLS-verificatie.
Wanneer een SOCKS-tussenpersoon beschikbaar is, kan de FTPSClient van Commons Net de geërfde socket-proxy-interface gebruiken. Houd de FTPS-server als bestemming van de verbinding:
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);
Dit start een expliciete FTPS-verbinding. De toepassing beheert nog steeds de aanmelding, de onderhandeling over gegevensbescherming, de afhandeling van de overdracht en het verbreken. De instelling null trust manager kiest de standaard trust managers van de JVM in plaats van de alleen op datum gebaseerde certificaatcontrole van Commons Net. Gebruik de bedoelde trust store en de hostnaam van het certificaat van de server.
Bij passieve overdrachten maakt de huidige FTPSClient-implementatie ook de datasocket via de geconfigureerde proxy en voegt daarna de TLS-laag toe. Gebruik na het aanmelden de passieve modus en onderhandel het vereiste beveiligde datakanaal via de normale FTPS-API. Een geslaagde controleverbinding rondt dat werk niet af; de passieve dataconnectie blijft een apart pad.
De code gaat uit van een SOCKS-dienst zonder extra account. Ondersteuning voor authenticatie vereist een aparte beoordeling voor de gekozen Java-runtime en implementatie.
Dit is niet de HTTP CONNECT-interface van FTPHTTPClient. Die broer verwerkt gewone FTP via een HTTP-tunnel; het wijzigen van zijn poort voegt geen FTPS toe. Als het netwerk alleen een HTTP-proxy toestaat, kies dan een FTPS-implementatie of een onderhouden aanpassing die CONNECT ondersteunt op zowel het controle- als het datapad.
Behoud de proxyconfiguratie gedurende de hele levenscyclus van de client en beoordeel die voordat u een hergebruikt exemplaar opnieuw verbindt: het verbreken van FTPS reset de socketfabrieken. Vervang certificaatcontroles niet door een trust-all-manager om de route geslaagd te laten lijken.