Wenn ein SOCKS-Vermittler verfügbar ist, kann der FTPSClient von Commons Net die geerbte Socket-Proxy-Schnittstelle verwenden. Behalten Sie den FTPS-Server als Verbindungsziel bei:

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);

Dies startet eine explizite FTPS-Verbindung. Die Anwendung verantwortet weiterhin Anmeldung, Aushandlung des Datenschutzes, Übertragungsabwicklung und Trennung. Die Einstellung null trust manager wählt die Standard-Trust-Manager der JVM statt der rein datumsbasierten Zertifikatsprüfung von Commons Net. Verwenden Sie den vorgesehenen Trust Store und den Zertifikats-Hostnamen des Servers.

Bei passiven Übertragungen erzeugt die aktuelle FTPSClient-Implementierung auch ihren Datensocket über den konfigurierten Proxy und fügt dann die TLS-Schicht hinzu. Verwenden Sie nach der Anmeldung den passiven Modus und handeln Sie den erforderlichen geschützten Datenkanal über die normale FTPS-API aus. Eine erfolgreiche Steuerverbindung erledigt diese Arbeit nicht; die passive Datenverbindung bleibt ein separater Pfad.

Der Code setzt einen SOCKS-Dienst ohne zusätzliches Konto voraus. Die Unterstützung von Authentifizierung muss für die gewählte Java-Laufzeit und das Deployment gesondert geprüft werden.

Dies ist nicht die HTTP-CONNECT-Schnittstelle von FTPHTTPClient. Der Bruder verarbeitet gewöhnliches FTP über einen HTTP-Tunnel; das Ändern seines Ports fügt kein FTPS hinzu. Erlaubt das Netzwerk nur einen HTTP-Proxy, wählen Sie eine FTPS-Implementierung oder eine gepflegte Anpassung, die CONNECT sowohl auf dem Steuer- als auch auf dem Datenpfad unterstützt.

Behalten Sie die Proxy-Konfiguration über den gesamten Client-Lebenszyklus bei, und prüfen Sie sie vor dem erneuten Verbinden einer wiederverwendeten Instanz: Das Trennen von FTPS setzt die Socket-Factories zurück. Ersetzen Sie Zertifikatsprüfungen nicht durch einen Trust-all-Manager, damit die Route erfolgreich erscheint.

Ähnliche Artikel