Apabila perantara SOCKS tersedia, FTPSClient Commons Net boleh menggunakan antara muka socket proxy yang diwarisi. Kekalkan pelayan FTPS sebagai destinasi sambungan:

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 memulakan sambungan FTPS eksplisit. Aplikasi masih bertanggungjawab atas log masuk, rundingan perlindungan data, pengendalian pemindahan dan pemutusan. Tetapan null trust manager memilih trust manager lalai JVM dan bukannya semakan sijil Commons Net yang hanya berdasarkan tarikh. Gunakan trust store yang dimaksudkan dan nama hos sijil pelayan.

Untuk pemindahan pasif, pelaksanaan FTPSClient semasa turut mencipta socket datanya melalui proksi yang dikonfigurasikan, kemudian menambah lapisan TLS. Selepas log masuk, gunakan mod pasif dan rundingkan saluran data terlindung yang diperlukan melalui API FTPS biasa. Sambungan kawalan yang berjaya tidak menyelesaikan kerja itu; sambungan data pasif kekal sebagai laluan berasingan.

Kod menganggap perkhidmatan SOCKS tanpa akaun tambahan. Sokongan pengesahan perlu disemak secara berasingan untuk runtime Java dan penggunaan yang dipilih.

Ini bukan antara muka HTTP CONNECT FTPHTTPClient. Saudara itu mengendalikan FTP biasa melalui terowong HTTP; menukar portnya tidak menambah FTPS. Jika rangkaian hanya membenarkan proksi HTTP, pilih pelaksanaan FTPS atau penyesuaian yang diselenggara yang menyokong CONNECT pada kedua-dua laluan kawalan dan data.

Kekalkan konfigurasi proksi sepanjang kitaran hayat klien, dan semak semula sebelum menyambung semula instans yang digunakan semula: pemutusan FTPS menetapkan semula kilang socket. Jangan gantikan semakan sijil dengan trust-all manager supaya laluan kelihatan berjaya.

Artikel berkaitan