


Bagaimana untuk Menyelesaikan Isu Penggunaan Semula Sesi TLS dalam Pelanggan FTPS Java?
Menyelesaikan Isu Penggunaan Semula Sesi TLS untuk Sambungan Data FTPS
Apabila membuat sambungan FTPS, adalah penting untuk sambungan data menggunakan semula TLS sesi yang ditubuhkan untuk sambungan kawalan. Ini memastikan pelayan mengesahkan identiti pelanggan untuk kedua-dua sambungan. Walau bagaimanapun, beberapa pelayan FTP(S), termasuk FileZilla, menguatkuasakan keperluan ini.
Pustaka Apache Commons Net, yang digunakan oleh banyak pelanggan FTPS Java, tidak mempunyai ciri penggunaan semula sesi ini. Untuk mengatasi had ini, adalah disyorkan untuk memeriksa pelaksanaan klien Cyberduck FTP(S), yang menyokong penggunaan semula sesi TLS/SSL.
Khususnya, fokus pada kaedah prepareDataSocket dalam FTPClient.java. Kaedah ini membenarkan penggunaan semula sesi TLS/SSL daripada sambungan kawalan untuk sambungan data.
Berikut ialah contoh kaedah prepareDataSocket:
@Override protected void _prepareDataSocket_(final Socket socket) { if (preferences.getBoolean("ftp.tls.session.requirereuse")) { if (socket instanceof SSLSocket) { // Control socket is SSL final SSLSession session = ((SSLSocket) _socket_).getSession(); if (session.isValid()) { final SSLSessionContext context = session.getSessionContext(); context.setSessionCacheSize(preferences.getInteger("ftp.ssl.session.cache.size")); try { final Field sessionHostPortCache = context.getClass().getDeclaredField("sessionHostPortCache"); sessionHostPortCache.setAccessible(true); final Object cache = sessionHostPortCache.get(context); final Method putMethod = cache.getClass().getDeclaredMethod("put", Object.class, Object.class); putMethod.setAccessible(true); Method getHostMethod; try { getHostMethod = socket.getClass().getMethod("getPeerHost"); } catch (NoSuchMethodException e) { // Running in IKVM getHostMethod = socket.getClass().getDeclaredMethod("getHost"); } getHostMethod.setAccessible(true); Object peerHost = getHostMethod.invoke(socket); putMethod.invoke(cache, String.format("%s:%s", peerHost, socket.getPort()).toLowerCase(Locale.ROOT), session); } catch (NoSuchFieldException e) { // Not running in expected JRE log.warn("No field sessionHostPortCache in SSLSessionContext", e); } catch (Exception e) { // Not running in expected JRE log.warn(e.getMessage()); } } else { log.warn(String.format("SSL session %s for socket %s is not rejoinable", session, socket)); } } } }
Kaedah ini memastikan sesi TLS/SSL daripada sambungan kawalan digunakan semula untuk sambungan data.
Pertimbangan Tambahan:
Dalam Java 8u161 dan kemudian, anda mungkin menghadapi konflik dengan sokongan sambungan rahsia induk yang dilanjutkan. Untuk mengurangkannya, lumpuhkan sambungan ini dengan menetapkan sifat sistem jdk.tls.useExtendedMasterSecret kepada palsu.
Jika anda terus mengalami masalah, rujuk tiket Jira NET-408 untuk pelaksanaan alternatif dan maklumat lain yang berkaitan.
Dengan melaksanakan langkah-langkah ini dan memanfaatkan pelaksanaan klien Cyberduck FTP(S), anda boleh mewujudkan sambungan FTPS dengan penggunaan semula sesi TLS, memenuhi keperluan pelayan FTPS pelanggan anda.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Penggunaan Semula Sesi TLS dalam Pelanggan FTPS Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Apabila menggunakan tkmybatis untuk pertanyaan pangkalan data, bagaimana dengan anggun mendapatkan nama pembolehubah kelas entiti untuk membina keadaan pertanyaan adalah masalah biasa. Artikel ini akan ...
