"Closed remote host connection during handshake" when connecting to an FTP server using Commons Net FTPSClient

My code (I am using -Dhttps.protocols=TLSv1.2

VM argument on startup):

FTPSClient ftpClient = new FTPSClient("TLS", false);
ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
ftpClient.setAuthValue("TLS");

ftpClient.connect("myhost", 990);
ftpClient.login("mylogin", "mypassword");

      

Stack trace:

javax.net.ssl.SSLHandshakeException: Remote connection to remote host during handshake
      at sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:992)
    // too many traces ... Thrown
    by: java.io.EOFException: SSL - swapping is disabled incorrectly
      at sun.security.ssl.InputRecord.read (InputRecord.java:505)
      on sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:973)
      ... 33 more

Log from WinSCP (I can send files using WinSCP):

536 Copy 1 file / directory to remote directory "/" 536 PrTime: Yes; PrRO: No; Rght: rw-r - r--; PrR: No (no); FnCs: N; RIC: 0100; Resume: S (102400); CalcS: Yes; Mask:. 536 TM: B; ClAr: No; RemEOF: No; REMBOM: No; CPS: 0; NewerOnly: No; InclM :; ResumeL: 0 536 AscM: *. * Html; * .htm; *.text; * .php; * .php3; * .cgi; * .c; * .cpp; *.hour; * .pas; * .bas; * .tex; * .pl; * .js; .htaccess; * .xtml; * .css; * .cfg; * .ini; * .sh; * .xml 539 File: 'C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql' [2016-10-06T16: 34: 29.298Z] [4869] 557 Copying "C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql "on the remote started directory. 560 Binary transfer mode selected. 560 Iniciando carregamento de C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql 560 TYPE I 562 200 Type,installed on i 563 PASV 568 227 Enter passive Mode (10,28,14,218,250,0) 569 STOR cliente-dados.sql 569 Conectando a 10.28.14.218:64000 ... 575 150 Opening a data channel to upload a file to the server "/ cliente -dados.sql "579 Session ID reused 579 Using TLSv1.2, TLSv1 / SSLv3 cipher: ECDHE-RSA-AES256-GCM-SHA384, 2048 bits RSA, ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx = ECDH Au = RSA Enc = AESGCM (256) Mac = AEAD 580 Conexão SSL Estabelecida 586 226 Transmitted successfully "/cliente-dados.sql" 586 MFMT 20161006163429 cliente-dados.sql 590 213 modify = 20161006163429; /cliente-dad bem-sucedido 591 Submitted: 'C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql' [4869]575 150 Opening a data channel to upload a file to the server "/cliente-dados.sql" 579 Session ID reused 579 Using TLSv1.2, TLSv1 / SSLv3 cipher: ECDHE-RSA-AES256-GCM-SHA384, 2048 RSA bits, ECDHE- RSA-AES256-GCM-SHA384 TLSv1.2 Kx = ECDH Au = RSA Enc = AESGCM (256) Mac = AEAD 580 Conexão SSL Estabelecida 586 226 Transmitted successfully "/cliente-dados.sql" 586 MFMT 20161006163429 cliente-590 213 modify = 20161006163429; /cliente-dados.sql 590 Carregamento bem-sucedido 591 Transferred to: 'C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql' [4869]575 150 Opening a data channel to upload a file to the server "/cliente-dados.sql" 579 Session ID reused 579 Using TLSv1.2, TLSv1 / SSLv3 cipher: ECDHE-RSA-AES256-GCM-SHA384, 2048 RSA bits, ECDHE- RSA-AES256-GCM-SHA384 TLSv1.2 Kx = ECDH Au = RSA Enc = AESGCM (256) Mac = AEAD 580 Conexão SSL Estabelecida 586 226 Transmitted successfully "/cliente-dados.sql" 586 MFMT 20161006163429 cliente-590 213 modify = 20161006163429; /cliente-dados.sql 590 Carregamento bem-sucedido 591 Transferred to: 'C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql' [4869]2 Kx = ECDH Au = RSA Enc = AESGCM (256) Mac = AEAD 580 Conexão SSL Estabelecida 586 226 Transferred successfully "/cliente-dados.sql" 586 MFMT 20161006163429 cliente-dados.sql 590 213 d / cliente-dados.sql 590 213 d / cliente-dados.sql 590 213 d / cliente-dados.sql .sql 590 Carregamento bem-sucedido 591 Transferred: 'C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql' [4869]2 Kx = ECDH Au = RSA Enc = AESGCM (256) Mac = AEAD 580 Conexão SSL Estabelecida 586 226 Transmitted successfully "/cliente-dados.sql" 586 MFMT 20161006163429 cliente-dados.sql 590 213 d / cliente-dados.sql 590 213 d / cliente-dados.sql 590 213 d / cliente-dados.sql .sql 590 Carregamento bem-sucedido 591 Transferred: 'C: \ Users \ trescon.jramos \ Documents \ cliente-dados.sql' [4869]

+3


source to share


1 answer


You are connecting to port 990, which is an implicit FTPS port. However, you are passing an argument false

to the isImplicit

FTPSClient

constructor
.

Or skip true

if you really want to use implicit FTPS:

FTPSClient ftpClient = new FTPSClient("TLS", true);

      



Or, in fact, you should really use explicit FTPS and default FTP port 21 (since implicit FTPS is non-standard compatibility with legacy compatibility):

FTPSClient ftpClient = new FTPSClient();
// ...
ftpClient.connect("myhost");

      

In other words, all you need to use FTPS is to use it FTPSClient

, no additional arguments or calls are required.

0


source







All Articles