2010-07-27 5 views
4

J'essaye de me connecter à un serveur FTPS (pas SFTP). Je me connecte à partir d'un système Linux, donc j'ai essayé lftp, ftp-ssl, et même en utilisant ftp_ssl_connect de php, mais aucun d'eux ne fonctionne. (J'ai pu me connecter à d'autres serveurs FTPS en utilisant tout ou au moins certaines des méthodes ci-dessus).Problème FTPS: "Un paquet TLS avec une longueur inattendue a été reçu."

L'erreur la plus descriptive que j'ai est de lftp avec debug tout le chemin jusqu'à 11:

$ lftp 
lftp :~> open -u my-username ftps://server.net 
Password: 
lftp [email protected]:~> debug 99999999999 
lftp [email protected]:~> ls 
FileCopy(0x717bf0) enters state INITIAL 
FileCopy(0x717bf0) enters state DO_COPY 
---- dns cache hit 
---- Connecting to server.net (IP ADDRESS) port 990 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_RSA_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_RSA_CAMELLIA_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_RSA_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_RSA_CAMELLIA_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_RSA_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_DSS_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_DSS_CAMELLIA_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_DSS_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_DSS_CAMELLIA_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_DSS_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: DHE_DSS_ARCFOUR_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: DHE_PSK_SHA_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: DHE_PSK_SHA_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: DHE_PSK_SHA_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: DHE_PSK_SHA_ARCFOUR_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_RSA_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_RSA_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_RSA_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_DSS_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_DSS_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_DSS_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_CAMELLIA_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_CAMELLIA_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_ARCFOUR_SHA1 
GNUTLS: HSK[acfbb0]: Keeping ciphersuite: RSA_ARCFOUR_MD5 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: PSK_SHA_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: PSK_SHA_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: PSK_SHA_3DES_EDE_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: PSK_SHA_ARCFOUR_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_AES_128_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_AES_256_CBC_SHA1 
GNUTLS: HSK[acfbb0]: Removing ciphersuite: SRP_SHA_3DES_EDE_CBC_SHA1 
GNUTLS: EXT[acfbb0]: Sending extension CERT_TYPE 
GNUTLS: HSK[acfbb0]: CLIENT HELLO was send [88 bytes] 
GNUTLS: REC[acfbb0]: Sending Packet[0] Handshake(22) with length: 88 
GNUTLS: ASSERT: gnutls_cipher.c:205 
GNUTLS: REC[acfbb0]: Sent Packet[1] Handshake(22) with length: 93 
GNUTLS: ASSERT: gnutls_buffers.c:638 
GNUTLS: ASSERT: gnutls_record.c:909 
GNUTLS: ASSERT: gnutls_buffers.c:1152 
GNUTLS: ASSERT: gnutls_handshake.c:1032 
GNUTLS: ASSERT: gnutls_handshake.c:2331 
**** gnutls_handshake: A TLS packet with unexpected length was received. 
---- Closing control socket 
ls: Fatal error: gnutls_handshake: A TLS packet with unexpected length was received.

Avec PHP, j'obtiens ce qui suit:

Warning: ftp_login(): SSL/TLS handshake failed in /home/user/ftp.php on line 7 
Warning: ftp_login(): SSL enabled start the negotiation in /home/user/ftp.php on line 7 
cannot login

Ligne 6: $connect = ftp_ssl_connect("server.net") or die("cannot connect");

ligne 7: $result = ftp_login($connect,"my-username","my-password") or die("cannot login");

Avec ftp-ssl:

$ ftp-ssl -d -z debug server.net 
SSL_DEBUG_FLAG on 
Connected to server.net. 
220-Security Notice 
220-All activities may be monitored. System use indicates consent to 
220 monitoring. Information may be given to law enforcement. 
ftp: setsockopt: Bad file descriptor 
Name (server.net:user): my-username 
---> AUTH SSL 
234 SSL enabled start the negotiation 
write to 0x68c190 (102 bytes => 102 (66)) 
0000 - 80 64 01 03 01 00 4b 00-00 00 10 00 00 39 00 00 .d....K......9.. 
0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............ 
0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 05 00 ..3..2../....... 
0030 - 00 04 01 00 80 00 00 15-00 00 12 00 00 09 06 00 ................ 
0040 - 40 00 00 14 00 00 11 00-00 08 00 00 06 04 00 80 @............... 
0050 - 00 00 03 02 00 80 e9 28-25 ed ea 2d e4 d2 f2 25 .......(%..-...% 
0060 - 80 e1 2e f1 c3 71         .....q 
read from 0x68c190 (7 bytes => -1 (FFFFFFFFFFFFFFFF)) 
ftp: SSL_connect error error:00000000:lib(0):func(0):reason(0) 
: Connection reset by peer

Désolé si ce poste est longue, mais je l'ai été googler pendant des jours sans réponse en vue. Juste espérer quelques informations de débogage que j'ai manqué pourrait être utile à quelqu'un.

Répondre

1

Il semble que le serveur utilise un algorithme d'échange de clé incompatible ou non valide. Essayez d'utiliser Wireshark pour attraper les paquets entre votre client et votre serveur, cela éclaircira probablement le problème. En outre, vous pouvez essayer d'activer/désactiver certains algorithmes d'échange de clés.

+0

Il semble qu'ils aient une règle de pare-feu interdisant l'ouverture du socket de données et qu'ils n'aient pas activé les connexions en mode passif. Si frustrant. Fonctionne maintenant, mais merci beaucoup pour la réponse. – bawkstoo

+0

Parfois, le port 21 est filtré pour autoriser uniquement le texte en clair par certains FAI, provoquant des erreurs comme celle-ci. Déplacer ftp vers un port différent peut aider. – watsonmw

Questions connexes