Коли доступний посередник 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. Програма досі відповідає за вхід, узгодження захисту даних, обробку передавання та від’єднання. Налаштування null trust manager вибирає стандартні trust manager-и JVM замість перевірки сертифіката лише за датою в Commons Net. Використовуйте передбачене сховище довіри та ім’я хоста сертифіката сервера.

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

Код припускає службу SOCKS без додаткового облікового запису. Підтримка автентифікації потребує окремого розгляду для вибраного середовища виконання Java і розгортання.

Це не інтерфейс HTTP CONNECT із FTPHTTPClient. Той побратим обробляє звичайний FTP через HTTP-тунель; зміна його порту не додає FTPS. Якщо мережа дозволяє лише HTTP-проксі, виберіть реалізацію FTPS або підтримувану адаптацію з підтримкою CONNECT і на керівному, і на каналі даних.

Зберігайте налаштування проксі протягом усього життєвого циклу клієнта та переглядайте його перед повторним підключенням використовуваного екземпляра: від’єднання FTPS скидає фабрики сокетів. Не замінюйте перевірки сертифікатів менеджером повної довіри, щоб маршрут здавався успішним.

Схожі статті