2017-05-22 8 views
3

Mon Code (j'utilise -Dhttps.protocols=TLSv1.2 arguments VM lors de son exécution):"a fermé la connexion hôte à distance lors de prise de contact" lors de la connexion au serveur FTP en utilisant Commons Net FTPSClient

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

Trace de la pile:

javax.net.ssl.SSLHandshakeException: l'hôte distant a fermé la connexion pendant la négociation
à l'adresse sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:992)
// trop de traces ...
causés par: java.io.EOFException: SSL des pairs fermé de manière incorrecte
à sun.security.ssl.InputRecord.read (InputRecord.java:505)
à sun.security .ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:973)
... 33 plus

Connexion de WinSCP (je peux envoyer des fichiers à l'aide de WinSCP):

536 fichiers/répertoires copie 1 dans le répertoire distant "/" 536 PrTime: Oui; PrRO: Non; Rough: rw-r - r--; PrR: Non (Non); FnCs: N; RIC: 0100; Résumé: S (102400); CalcS: Oui; Masque: . 536 TM: B; ClAr: Non; RemEOF: Non; RemBOM: Non; CPS: 0; NewerOnly: Non; INCM:; ResumeL: 0 536 AscM: *. * Html; * .htm; *.SMS; * .php; * .php3; * .cgi; * .c; * .cpp; * .h; * .pas; * .bas; *.Texas; *.PL; * .js; .htaccess; * .xtml; * .css; * .cfg; * .ini; * .sh; * .xml 539 Fichier: 'C: \ Utilisateurs \ trescon.jramos \ Documents \ cliente-dados.sql' [2016-10-06T16: 34: 29.298Z] [4869] 557 Copie "C: \ Users \ trescon .jramos \ Documents \ cliente-dados.sql "vers le répertoire distant démarré. 560 Mode de transfert binaire sélectionné. 560 Iniciando carregamento de C: \ Utilisateurs \ trescon.jramos \ Documents \ cliente-dados.sql 560 TYPE I 562 200 Type mis à I 563 PASV 568 227 Saisie Passive Mode (10,28,14,218,250,0) 569 STOR cliente-dados.sql 569 Conectando a 10.28.14.218:64000 ... 575 150 Ouverture du canal de données pour le téléchargement de fichiers sur le serveur de "/cliente-dados.sql" 579 ID de session réutilisé 579 Utilisation de TLSv1.2, chiffrement TLSv1/SSLv3: ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA, ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx = ECDH Au = RSA Enc = AESGCM (256) Mac = AEAD 580 Conexão SSL estabelecida 586 226 Transfert réussi de «/cliente-dados.sql» 586 MFMT 20161006163429 cliente-dados.sql 590 213 modify = 20161006163429; /cliente-dados.sql 590 Carregamento bem-sucedido 591 Transfert fait: 'C: \ Users \ trescon.jramos \ Documents \ Cliente-dados.sql' [4869]

+0

il serait utile pour moi de répondre à votre question si vous testez le serveur en utilisant les trois niveaux de cryptage: [FTP testeur en ligne] (https://ncomputers.org/ftptest) – ncomputers

Répondre

0

Vous connectez au port 990 , qu'est-ce qu'un port FTPS implicite. Pourtant, vous passez de false à isImplicit argument de FTPSClient constructor.

Soit passer true, si vous voulez vraiment utiliser les FTPS implicites:

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

Ou en fait, vous devriez vraiment utiliser un FTPS explicite et le port FTP par défaut 21 (comme le FTPS implicite est non standard hack compatibilité héritée):

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

en d'autres termes, tout ce que vous devez utiliser FTPS est utiliser FTPSClient, aucun des arguments supplémentaires ou des appels sont nécessaires.

+0

Quand je 'FTPSClient FtpClient = nouveau FTPSClient ("TLS", vrai); ' J'ai obtenu ceci: ' Message SSL non reconnu, connexion en clair? javax.net.ssl.SSLException: message SSL non reconnu, connexion en clair? ' – user2133331

+0

Lorsque j'ai utilisé' FTPSClient ftpClient = new FTPSClient(); 'mais le port 990 a toujours la même valeur **" Connexion de l'hôte distant fermée lors de la prise de contact "* * erreur – user2133331

+0

Lorsque j'ai utilisé le port 21, j'ai obtenu un délai de connexion. – user2133331