![How to Reuse the Same TLS Session for Data Connections in FTPS using Apache Commons Net?](https://img.php.cn/upload/article/000/000/000/173119308571401.jpg)
Wie stelle ich mithilfe von FTPS eine Datenverbindung mit derselben TLS-Sitzung her?
Die Aufrechterhaltung derselben TLS-Sitzung sowohl für Steuerungs- als auch für Datenverbindungen ist eine entscheidende Sicherheitsmaßnahme bei FTPS . Einige FTP-Server erzwingen diese Anforderung und verursachen Probleme, wenn die Datenverbindung versucht, eine separate TLS-Sitzung aufzubauen.
In Apache Commons Net kann dieses Problem aufgrund der Standardkonfiguration auftreten, die eine neue Sitzung für jeden Host voraussetzt /port-Kombination. Um dieses Problem zu beheben, ziehen Sie die folgenden Maßnahmen in Betracht:
-
Überprüfen Sie die Serverkonformität: Stellen Sie sicher, dass der FTPS-Server die gleichen TLS-Sitzungsanforderungen erzwingt. Überprüfen Sie die Serverdokumentation oder verwenden Sie zur Bestätigung einen Client wie FileZilla.
-
Apache Commons Net anpassen: Implementieren Sie einen benutzerdefinierten FTPSClient, der die Methode „_prepareDataSocket_“ überschreibt. Anleitungen zum Einrichten des TLS-Sitzungscachings und der Wiederverwendung finden Sie im FTPClient.java-Code von Cyberduck.
-
Spring Integration DefaultFtpsSessionFactory überschreiben: Erstellen Sie eine benutzerdefinierte Unterklasse von DefaultFtpsSessionFactory und überschreiben Sie „createClientInstance()“ "-Methode, um Ihre geänderte FTPSClient-Instanz zurückzugeben.
-
Deaktivieren Sie die erweiterte Master-Secret-Erweiterung (JDK 8u161 und höher): Fügen Sie Ihrem Code die folgende Zeile hinzu, um die erweiterte Master-Secret-Erweiterung zu deaktivieren Kompatibilitätsprobleme verursachen:
System.setProperty("jdk.tls.useExtendedMasterSecret", "false");
-
Verwenden Sie das Feld sessionByHostAndPort: Verwenden Sie für neuere Java-Versionen das Feld „sessionsByHostAndPort“ anstelle von „sessionHostPortCache“, um auf den TLS-Sitzungscache zuzugreifen.
-
SDK-Einschränkungen auf Android umgehen: Auf Android-Geräten müssen Sie möglicherweise umgehen SDK-Einschränkungen für den Zugriff auf private Felder mithilfe von Reflektion.
Durch die Implementierung dieser Maßnahmen können Sie Apache Commons Net ermöglichen, die TLS-Sitzung für die Datenverbindung wiederzuverwenden und so die Kompatibilität mit FTPS-Servern sicherzustellen, die dies erfordern.
Das obige ist der detaillierte Inhalt vonWie kann ich dieselbe TLS-Sitzung für Datenverbindungen in FTPS mit Apache Commons Net wiederverwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!