Rute SOCKS untuk FTPSClient Commons Net
Gunakan antarmuka socket-proxy Commons Net untuk FTPS sambil mempertahankan nama host server, koneksi data pasif, dan verifikasi TLS.
Saat perantara SOCKS tersedia, FTPSClient Commons Net dapat menggunakan antarmuka socket-proxy yang diwariskan. Pertahankan server FTPS sebagai tujuan koneksi:
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);
Ini memulai koneksi FTPS eksplisit. Aplikasi tetap bertanggung jawab atas login, negosiasi perlindungan data, penanganan transfer, dan pemutusan. Setelan null trust manager memilih trust manager bawaan JVM, bukan pemeriksaan sertifikat berbasis tanggal saja milik Commons Net. Gunakan trust store yang dimaksud dan nama host sertifikat server.
Untuk transfer pasif, implementasi FTPSClient saat ini juga membuat socket datanya melalui proxy yang dikonfigurasi, lalu menambahkan lapisan TLS. Setelah login, gunakan mode pasif dan negosiasikan kanal data terlindungi yang diperlukan melalui API FTPS biasa. Koneksi kontrol yang berhasil tidak menyelesaikan pekerjaan itu; koneksi data pasif tetap menjadi jalur terpisah.
Kode mengasumsikan layanan SOCKS tanpa akun tambahan. Dukungan autentikasi perlu ditinjau terpisah untuk runtime Java dan penerapan yang dipilih.
Ini bukan antarmuka HTTP CONNECT milik FTPHTTPClient. Saudara itu menangani FTP biasa melalui terowongan HTTP; mengubah portnya tidak menambahkan FTPS. Jika jaringan hanya mengizinkan proxy HTTP, pilih implementasi FTPS atau adaptasi terpelihara yang mendukung CONNECT pada jalur kontrol maupun data.
Pertahankan konfigurasi proxy sepanjang siklus hidup klien, dan tinjau sebelum menyambungkan kembali instans yang dipakai ulang: pemutusan FTPS mengatur ulang pabrik socket. Jangan ganti pemeriksaan sertifikat dengan trust-all manager agar rute tampak berhasil.