Когато има SOCKS посредник, FTPSClient на Commons Net може да използва наследения интерфейс за сокет-прокси. Запазете 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 слоя. След влизане използвайте пасивен режим и договорете необходимия защитен канал за данни чрез нормалния FTPS API. Успешната контролна връзка не завършва тази работа; пасивната връзка за данни остава отделен път.

Кодът предполага SOCKS услуга без допълнителен акаунт. Поддръжката на удостоверяване изисква отделен преглед за избраната Java среда и внедряване.

Това не е интерфейсът HTTP CONNECT на FTPHTTPClient. Този събрат обработва обикновен FTP през HTTP тунел; смяната на порта му не добавя FTPS. Ако мрежата разрешава само HTTP прокси, изберете FTPS реализация или поддържана адаптация, която поддържа CONNECT по контролния път и по пътя за данни.

Запазете прокси конфигурацията за целия жизнен цикъл на клиента и я прегледайте преди повторно свързване на използван екземпляр: прекъсването на FTPS нулира фабриките за сокети. Не заменяйте проверките на сертификата с trust-all manager, за да изглежда маршрутът успешен.

Подобни статии