Kun SOCKS-välittäjä on käytettävissä, Commons Netin FTPSClient voi käyttää perittyä socket-välityspalvelinrajapintaa. Pidä FTPS-palvelin yhteyden kohteena:

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

Tämä aloittaa eksplisiittisen FTPS-yhteyden. Sovellus vastaa edelleen kirjautumisesta, tietosuojan neuvottelusta, siirron käsittelystä ja katkaisusta. Null trust manager -asetus valitsee JVM:n oletusarvoiset trust managerit Commons Netin pelkän päivämäärän mukaiseen varmenne tarkistukseen sijaan. Käytä aiottua trust storea ja palvelimen varmenteen isäntänimeä.

Passiivisissa siirroissa nykyinen FTPSClient-toteutus luo datapistokkeensa myös määritetyn välityspalvelimen kautta ja lisää sitten TLS-kerroksen. Kirjautumisen jälkeen käytä passiivista tilaa ja neuvottele tarvittava suojattu datakanava tavallisen FTPS-rajapinnan kautta. Onnistunut ohjausyhteys ei suorita tätä työtä; passiivinen datayhteys pysyy erillisenä polkuna.

Koodi olettaa SOCKS-palvelun ilman lisätiliä. Todennuksen tuki vaatii erillisen tarkastelun valitulle Java-ajoympäristölle ja käyttöönotolle.

Tämä ei ole FTPHTTPClientin HTTP CONNECT -rajapinta. Se sisar käsittelee tavallista FTP:tä HTTP-tunnelin kautta; sen portin vaihtaminen ei lisää FTPS:ää. Jos verkko sallii vain HTTP-välityspalvelimen, valitse FTPS-toteutus tai ylläpidetty mukautus, joka tukee CONNECTia sekä ohjaus- että datapolulla.

Säilytä välityspalvelinasetus koko asiakkaan elinkaaren ajan ja tarkista se ennen uudelleenkäytetyn instanssin uudelleenyhdistämistä: FTPS:n katkaisu nollaa socket-tehtaat. Älä korvaa varmenteen tarkistuksia trust-all managerilla, jotta reitti näyttäisi onnistuneelta.

Aiheeseen liittyvät artikkelit