The server, which I administer, runs proftpd 1.3.4a. It is a Debian (testing) system with packages proftpd-basic, proftpd-doc and gadmin-proftpd installed.
The client is Filezilla 3.5.2 (in latest Kubuntu, but the same error happens in Windows). With Filezilla client 3.0.11 everything is OK (no errors).
As far as I know, proftpd 1.3.4a had solved the SSL/TLS closure notification problem. Am I right?
My proftpd.conf <IfModule mod_tls.c> section configuration:
TLSEngine on
TLSRequired on
TLSVerifyClient off
TLSProtocol SSLv23
TLSLog /var/log/proftpd_tls.log
TLSRSACertificateFile /etc/gadmin-proftpd/certs/cert.pem
TLSRSACertificateKeyFile /etc/gadmin-proftpd/certs/key.pem
TLSCACertificateFile /etc/gadmin-proftpd/certs/cacert.pem
TLSRenegotiate none
# TLSOptions NoSessionReuseRequired (I have to enable this option in order to get filezilla 3.0.11 working)
and this is the complete trace (mode debug on) with FileZilla 3.5.2 (sorry, some phrases in spanish, thought I think I have translated the important stuff):
Could you please shed a light on me ? Maybe Is something regarding the configuration of proftpd or Filezilla? Or is this a bug on proftpd? (I want to know for issuing the corresponding Debian bug report). Thanks a lot in advance!
Estado: Resolviendo la dirección de xxx.xxx.xxx.xx
Estado: Conectando a xxx.xxx.xxx.xxx:21...
Estado: Conexión establecida, esperando el mensaje de bienvenida...
Traza: CFtpControlSocket::OnReceive()
Respuesta: 220 El FTP de teseo
Traza: CFtpControlSocket::SendNextCommand()
Comando: AUTH TLS
Traza: CFtpControlSocket::OnReceive()
Respuesta: 234 AUTH TLS successful
Estado: Inicializando TLS...
Traza: CTlsSocket::Handshake()
Traza: CTlsSocket::ContinueHandshake()
Traza: CTlsSocket::OnSend()
Traza: CTlsSocket::OnRead()
Traza: CTlsSocket::ContinueHandshake()
Traza: CTlsSocket::OnRead()
Traza: CTlsSocket::ContinueHandshake()
Traza: CTlsSocket::OnRead()
Traza: CTlsSocket::ContinueHandshake()
Traza: Handshake successful
Traza: Cipher: AES-256-CBC, MAC: SHA1
Estado: Verificando certificado...
Traza: CFtpControlSocket::SendNextCommand()
Comando: USER XXXXXX
Estado: Conexión TLS/SSL establecida.
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 331 Password required for XXXXXX
Traza: CFtpControlSocket::SendNextCommand()
Comando: PASS ******************
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 230 User XXXXXX logged in
Traza: CFtpControlSocket::SendNextCommand()
Comando: SYST
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 215 UNIX Type: L8
Traza: CFtpControlSocket::SendNextCommand()
Comando: FEAT
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 211-Features:
Respuesta: MDTM
Respuesta: MFMT
Respuesta: TVFS
Respuesta: AUTH TLS
Respuesta: UTF8
Respuesta: MFF modify;UNIX.group;UNIX.mode;
Respuesta: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Respuesta: PBSZ
Respuesta: PROT
Respuesta: SITE MKDIR
Respuesta: SITE RMDIR
Respuesta: SITE UTIME
Respuesta: SITE SYMLINK
Respuesta: REST STREAM
Respuesta: LANG es-ES.UTF-8*
Respuesta: SITE COPY
Respuesta: SIZE
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 211 End
Traza: CFtpControlSocket::SendNextCommand()
Comando: OPTS UTF8 ON
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 200 UTF8 set to on
Traza: CFtpControlSocket::SendNextCommand()
Comando: PBSZ 0
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 200 PBSZ 0 successful
Traza: CFtpControlSocket::SendNextCommand()
Comando: PROT P
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 200 Protection set to Private
Estado: Conectado
Traza: CFtpControlSocket::ResetOperation(0)
Traza: CControlSocket::ResetOperation(0)
Traza: CFileZillaEnginePrivate::ResetOperation(0)
Estado: Recuperando el listado del directorio... (Recovering directory listing...)
Traza: CFtpControlSocket::SendNextCommand()
Traza: CFtpControlSocket::ChangeDirSend()
Comando: PWD
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 257 "/" is the current directory
Traza: CFtpControlSocket::ResetOperation(0)
Traza: CControlSocket::ResetOperation(0)
Traza: CFtpControlSocket::ParseSubcommandResult(0)
Traza: CFtpControlSocket::ListSubcommandResult()
Traza: state = 1
Traza: CFtpControlSocket::SendNextCommand()
Traza: CFtpControlSocket::TransferSend()
Traza: state = 1
Comando: TYPE I
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 200 Type set to I
Traza: CFtpControlSocket::TransferParseResponse()
Traza: code = 2
Traza: state = 1
Traza: CFtpControlSocket::SendNextCommand()
Traza: CFtpControlSocket::TransferSend()
Traza: state = 2
Comando: PASV
Traza: CTlsSocket::OnRead()
Traza: CFtpControlSocket::OnReceive()
Respuesta: 227 Entering Passive Mode (xxx,xxx,xxx,xxx,xxx,x).
Traza: CFtpControlSocket::TransferParseResponse()
Traza: code = 2
Traza: state = 2
Traza: CFtpControlSocket::SendNextCommand()
Traza: CFtpControlSocket::TransferSend()
Traza: state = 4
Comando: MLSD
Traza: CTransferSocket::OnConnect
Traza: CTlsSocket::Handshake()
Traza: CTlsSocket::ContinueHandshake()
Traza: CTlsSocket::OnSend()
Traza: CTlsSocket::OnSend()
Traza: CTlsSocket::OnRead()
Traza: CTlsSocket::Failure(-9, 103)
Error: GnuTLS error -9: Se recibió un paquete TLS con longitud inesperada
Estado: El servidor no respondió adecuadamente, cierre de conexión TLS
Traza: CRealControlSocket::OnClose(103)
Error: Desconectado del servidor: ECONNABORTED - Connection aborted
Traza: CControlSocket::DoClose(64)
Traza: CFtpControlSocket::ResetOperation(66)
Traza: CControlSocket::ResetOperation(66)
Traza: CFtpControlSocket::ResetOperation(66)
Traza: CControlSocket::ResetOperation(66)
Error: Error al recuperar el listado del directorio
Traza: CFileZillaEnginePrivate::ResetOperation(66)
Traza: CFileZillaEnginePrivate::ResetOperation(0)