Калі даступны пасярэднік SOCKS, FTPSClient з Commons Net можа выкарыстоўваць унаследаваны інтэрфейс socket-проксі. Пакіньце сервер FTPS пунктам прызначэння злучэння:

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

Гэта пачынае злучэнне з явным FTPS. Праграма па-ранейшаму адказвае за ўваход, узгадненне абароны даных, кіраванне перадачай і адключэнне. Пустое значэнне trust-manager выбірае стандартныя trust manager-ы JVM, а не праверку сертыфіката толькі па даце ў Commons Net. Выкарыстоўвайце прызначанае сховішча даверу і імя хоста сертыфіката сервера.

Для пасіўных перадач бягучая рэалізацыя FTPSClient стварае сокет даных таксама праз наладжаны проксі, затым дадае ўзровень TLS. Пасля ўваходу выкарыстоўвайце пасіўны рэжым і ўзгадніце патрабаваны абаронены канал даных праз звычайны API FTPS. Паспяховае кантрольнае злучэнне не завяршае гэтую працу; пасіўнае злучэнне даных застаецца асобным шляхам.

Код мяркуе службу SOCKS без дадатковага ўліковага запісу. Падтрымка аўтэнтыфікацыі патрабуе асобнага разгляду для абранага асяроддзя Java і разгортвання.

Гэта не інтэрфейс HTTP CONNECT з FTPHTTPClient. Той пабрацім апрацоўвае звычайны FTP праз HTTP-тунель; змена яго порта не дадае FTPS. Калі сетка дазваляе толькі HTTP-проксі, выберыце рэалізацыю FTPS або адаптацыю, якая падтрымліваецца, з падтрымкай CONNECT як на кантрольным, так і на канале даных.

Захоўвайце налады проксі на працягу ўсяго жыццёвага цыкла кліента і пераглядайце іх перад паўторным падключэннем экзэмпляра: адключэнне FTPS скідвае фабрыкі сокетаў. Не замяняйце праверкі сертыфікатаў менеджэрам поўнага даверу, каб маршрут здаваўся паспяховым.

Падобныя артыкулы