Bir SOCKS aracısı mevcut olduğunda, Commons Net’in FTPSClient’ı devralınan socket proxy arabirimini kullanabilir. FTPS sunucusunu bağlantı hedefi olarak koruyun:

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

Bu, açık bir FTPS bağlantısı başlatır. Uygulama hâlâ oturum açmayı, veri koruması müzakeresini, aktarım işleyişini ve bağlantının kesilmesini üstlenir. null trust manager ayarı, Commons Net’in yalnızca tarihe dayalı sertifika denetimi yerine JVM’in varsayılan trust manager’larını seçer. Amaçlanan trust store’u ve sunucunun sertifika ana bilgisayar adını kullanın.

Pasif aktarımlarda, mevcut FTPSClient uygulaması veri soketini de yapılandırılmış proxy üzerinden oluşturur ve ardından TLS katmanını ekler. Oturum açtıktan sonra pasif modu kullanın ve gereken korumalı veri kanalını normal FTPS API’si üzerinden müzakere edin. Başarılı bir denetim bağlantısı bu işi tamamlamaz; pasif veri bağlantısı ayrı bir yol olarak kalır.

Kod, ek hesap gerektirmeyen bir SOCKS hizmeti varsayar. Kimlik doğrulama desteği, seçilen Java çalışma zamanı ve dağıtım için ayrı bir inceleme gerektirir.

Bu, FTPHTTPClient’ın HTTP CONNECT arabirimi değildir. O kardeş, sıradan FTP’yi bir HTTP tüneli üzerinden yönetir; bağlantı noktasını değiştirmek FTPS eklemez. Ağ yalnızca bir HTTP proxy’ye izin veriyorsa, CONNECT’i hem denetim hem de veri yolunda destekleyen bir FTPS uygulaması veya bakımı yapılan bir uyarlama seçin.

Proxy yapılandırmasını istemcinin tüm yaşam döngüsü boyunca koruyun ve yeniden kullanılan bir örneği yeniden bağlamadan önce gözden geçirin: FTPS bağlantısının kesilmesi soket fabrikalarını sıfırlar. Rotanın başarılı görünmesi için sertifika denetimlerini trust-all manager ile değiştirmeyin.

İlgili makaleler