Kai yra SOCKS tarpininkas, „Commons Net“ FTPSClient gali naudoti paveldėtą socket-proxy sąsają. Palikite FTPS serverį ryšio paskirties vieta:

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

Tai pradeda aiškų FTPS ryšį. Programa vis dar atsako už prisijungimą, duomenų apsaugos derinimą, perdavimo tvarkymą ir atsijungimą. Null trust manager nustatymas pasirenka numatytuosius JVM trust manager, o ne „Commons Net“ tik datos pagrindu atliekamą sertifikato patikrą. Naudokite numatytą trust store ir serverio sertifikato pagrindinio kompiuterio vardą.

Pasyvių perdavimų atveju dabartinė FTPSClient implementacija savo duomenų socket taip pat sukuria per sukonfigūruotą proxy ir tada prideda TLS sluoksnį. Prisijungę naudokite pasyvų režimą ir per įprastą FTPS API suderinkite reikiamą apsaugotą duomenų kanalą. Sėkmingas valdymo ryšys to darbo nebaigia; pasyvusis duomenų ryšys lieka atskiru keliu.

Kodas numato SOCKS paslaugą be papildomos paskyros. Autentifikavimo palaikymą reikia atskirai įvertinti pasirinktai Java vykdymo aplinkai ir diegimui.

Tai ne „FTPHTTPClient“ HTTP CONNECT sąsaja. Tas brolis tvarko įprastą FTP per HTTP tunelį; jo prievado keitimas neprideda FTPS. Jei tinklas leidžia tik HTTP proxy, pasirinkite FTPS implementaciją arba prižiūrimą adaptaciją, palaikančią CONNECT valdymo ir duomenų keliuose.

Išlaikykite proxy konfigūraciją visą kliento gyvavimo ciklą ir peržiūrėkite ją prieš iš naujo prijungdami pakartotinai naudojamą egzempliorių: FTPS atsijungimas iš naujo nustato socket gamyklas. Nepakeiskite sertifikato patikrų trust-all manager, kad maršrutas atrodytų sėkmingas.

Susiję straipsniai