"Requires 550 SSL / TLS per data link" using Apache Commons FTPSClient

I have a problem reading data from FTPClient on an FTP server (ProFTPD 1.3.3a), which requires encryption on the data channel. Everything works fine without encryption on another server.

My code is:

FTPSClient ftpsClient = new FTPSClient("TLS", false); log.debug("using TLS"); FTPClientConfig ftpClientConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX); ftpClientConfig.setServerLanguageCode("de"); ftpsClient.configure(ftpClientConfig); ftpsClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); // outputs all conversation to the console ftpsClient.connect(host, 21); ftpsClient.login(username, password); ftpsClient.enterLocalPassiveMode(); ftpsClient.changeWorkingDirectory(pathname); listNames = ftp.mlistDir(); ftpsClient.logout(); 

What do I get from the output

 220 ProFTPD 1.3.3a Server (xxx) [xxx] AUTH TLS 234 AUTH TLS successful USER xxx 331 Password required for xxx PASS xxx 230 User xxx logged in CWD /www/catalog 250 CWD command successful PASV 227 Entering Passive Mode (xxx). MLSD 550 SSL/TLS required on the data channel QUIT 221 Goodbye. 

Any idea how to configure FTPSClient to use TLS / SSL on the data channel? Your help will be appreciated!

+4
source share
1 answer

You must enable data channel encryption before executing any commands that will transmit data over the data channel (for example, LIST).

Add this to your code after connecting to the server:

 // Set protection buffer size ftpClient.execPBSZ(0); // Set data channel protection to private ftpClient.execPROT("P"); 

At least this solved my problems (using proftpd).

+11
source

Source: https://habr.com/ru/post/1435025/


All Articles