Bagaimana untuk mewujudkan sambungan data dengan sesi TLS yang sama menggunakan FTPS?
Mengekalkan sesi TLS yang sama untuk kedua-dua sambungan kawalan dan data ialah langkah keselamatan yang penting dalam FTPS . Sesetengah pelayan FTP menguatkuasakan keperluan ini, menyebabkan masalah apabila sambungan data cuba mewujudkan sesi TLS yang berasingan.
Dalam Apache Commons Net, isu ini boleh timbul disebabkan konfigurasi lalainya, yang menganggap sesi baharu untuk setiap hos /port gabungan. Untuk menyelesaikan masalah ini, pertimbangkan langkah berikut:
-
Sahkan Pematuhan Pelayan: Pastikan pelayan FTPS menguatkuasakan keperluan sesi TLS yang sama. Semak dokumentasi pelayan atau gunakan klien seperti FileZilla untuk mengesahkan.
-
Sesuaikan Apache Commons Net: Laksanakan FTPSClient tersuai yang mengatasi kaedah "_prepareDataSocket_". Rujuk kod FTPClient.java Cyberduck untuk panduan tentang cara menyediakan caching dan penggunaan semula sesi TLS.
-
Override Spring Integration DefaultFtpsSessionFactory: Cipta subkelas tersuai DefaultFtpsSessionFactory dan gantikan "createClientIns" " kaedah untuk mengembalikan instance FTPSClient anda yang diubah suai.
-
Lumpuhkan Sambungan Rahsia Induk Lanjutan (JDK 8u161 dan ke atas): Tambahkan baris berikut pada kod anda untuk melumpuhkan sambungan rahsia induk lanjutan, yang mungkin menyebabkan isu keserasian:
System.setProperty("jdk.tls.useExtendedMasterSecret", "false");
-
Gunakan Medan sessionsByHostAndPort: Untuk versi Java yang lebih baharu, gunakan medan "sessionsByHostAndPort" dan bukannya "sessionHostPortCache" untuk mengakses cache sesi TLS.
-
Pintas Sekatan SDK pada Android: Pada peranti Android, anda mungkin perlu memintas Sekatan SDK untuk mengakses medan peribadi menggunakan pantulan.
Dengan melaksanakan langkah ini, anda boleh mendayakan Apache Commons Net menggunakan semula sesi TLS untuk sambungan data, memastikan keserasian dengan pelayan FTPS yang memerlukannya.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Semula Sesi TLS yang Sama untuk Sambungan Data dalam FTPS menggunakan Apache Commons Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!