Question:
I have a remote client that for some reason fails to connect to our FTP server. All other remote clients using the same agent are able to connect successfully.
However with this remote client I'm not able to see why it's failing. I do not have access to the the remote client system. Below is the redacted client and server logs.
On the FTP server I can see in the log where the control channel was opened and that an AUTH 234 as sent, and then 60 seconds later that the control channel is closed.
Any help in determining where the error is or even where to start looking would be appreciated.
Client Log:
2012-11-12-03:55:29 --> OpenConnection
2012-11-12-03:55:29 --> FTP Connection:xxx.yyy.com:21
2012-11-12-03:55:29 --> ChilkatLog:
2012-11-12-03:55:29 --> UnlockComponent:
2012-11-12-03:55:29 --> DllDate: Nov 3 2012
2012-11-12-03:55:29 --> UnlockPrefix: xxxxxxx
2012-11-12-03:55:29 --> Username: xxxxxxxx
2012-11-12-03:55:29 --> Architecture: Little Endian; 32-bit
2012-11-12-03:55:29 --> Language: .NET 2.0
2012-11-12-03:55:29 --> VerboseLogging: 0
2012-11-12-03:55:29 --> component: Ftp2
2012-11-12-03:55:29 --> unlockCode: xxxxxxxx
2012-11-12-03:55:29 --> RegKey:
2012-11-12-03:55:29 --> LibDate: Oct 18 2012
2012-11-12-03:55:29 --> requiresPerm: 0
2012-11-12-03:55:29 --> re-parsing expire date...
2012-11-12-03:55:29 --> Component successfully unlocked using permanent unlock code.
2012-11-12-03:55:29 --> --RegKey
2012-11-12-03:55:29 --> --UnlockComponent
2012-11-12-03:55:29 --> --ChilkatLog
2012-11-12-03:55:29 -->
2012-11-12-03:55:29 --> FTPSecurityProtocol= AuthTls = True
2012-11-12-03:55:29 --> FTPConnectTimeout= 60
2012-11-12-03:55:29 --> FTP Connect xxx.yyy.com
2012-11-12-03:55:29 --> ftp_OnProgressInfo: SocketConnect :xxx.yyy.com:21
2012-11-12-03:55:29 --> ftp_OnProgressInfo: HostnameResolve : xxx.yyy.com
2012-11-12-03:55:29 --> ftp_OnProgressInfo: ResolvedToIp : xxx.yyy.com.zzz
2012-11-12-03:55:30 --> ftp_OnProgressInfo: SocketConnected : xxx.yyy.com:21
2012-11-12-03:55:30 --> ftp_OnProgressInfo: FtpCmdResp : 220 Microsoft FTP Service
2012-11-12-03:55:30 --> ftp_OnProgressInfo: FtpCmdSent : AUTH TLS
2012-11-12-03:55:30 --> ftp_OnProgressInfo: FtpCmdResp : 234 AUTH command ok. Expecting TLS Negotiation.
2012-11-12-03:55:30 --> ftp_OnProgressInfo: SslHandshake : Starting
2012-11-12-03:56:30 --> FTP Open Error: FTP.Connect Error:ChilkatLog:
2012-11-12-03:56:30 --> Connect_Ftp2:
2012-11-12-03:56:30 --> DllDate: Nov 3 2012
2012-11-12-03:56:30 --> UnlockPrefix: xxx
2012-11-12-03:56:30 --> Username: xxx
2012-11-12-03:56:30 --> Architecture: Little Endian; 32-bit
2012-11-12-03:56:30 --> Language: .NET 2.0
2012-11-12-03:56:30 --> VerboseLogging: 1
2012-11-12-03:56:30 --> ProgressMonitoring:
2012-11-12-03:56:30 --> enabled: yes
2012-11-12-03:56:30 --> heartbeatMs: 0
2012-11-12-03:56:30 --> sendBufferSize: 65536
2012-11-12-03:56:30 --> --ProgressMonitoring
2012-11-12-03:56:30 --> ImplicitSsl: 0
2012-11-12-03:56:30 --> AuthTls: 1
2012-11-12-03:56:30 --> AuthSsl: 0
2012-11-12-03:56:30 --> Hostname: xxx.yyy.com
2012-11-12-03:56:30 --> Port: 21
2012-11-12-03:56:30 --> IdleTimeoutMs: 60000
2012-11-12-03:56:30 --> ConnectTimeout: 60
2012-11-12-03:56:30 --> HeartbeatMs: 0
2012-11-12-03:56:30 --> ConnectTimeoutMs_1: 60000
2012-11-12-03:56:30 --> calling ConnectSocket2
2012-11-12-03:56:30 --> IPV6 enabled connect with NO heartbeat.
2012-11-12-03:56:30 --> connectingTo: xxx.yyy.com
2012-11-12-03:56:30 --> resolveHostname1:
2012-11-12-03:56:30 --> dnsCacheLookup: xxx.yyy.com
2012-11-12-03:56:30 --> Resolving domain name (IPV4)
2012-11-12-03:56:30 --> --resolveHostname1
2012-11-12-03:56:30 --> GetHostByNameHB_ipv4: Elapsed time: 109 millisec
2012-11-12-03:56:30 --> myIP_1: xxx.yyy.com.zzz
2012-11-12-03:56:30 --> myPort_1: 4182
2012-11-12-03:56:30 --> connect successful (1)
2012-11-12-03:56:30 --> Turning on TCP_NODELAY.
2012-11-12-03:56:30 --> socketOptions:
2012-11-12-03:56:30 --> SO_SNDBUF: 8192
2012-11-12-03:56:30 --> SO_RCVBUF: 8192
2012-11-12-03:56:30 --> TCP_NODELAY: 1
2012-11-12-03:56:30 --> --socketOptions
2012-11-12-03:56:30 --> initialStatus: 220
2012-11-12-03:56:30 --> initialResponse: 220 Microsoft FTP Service
2012-11-12-03:56:30 --> converting to secure connection...
2012-11-12-03:56:30 --> ssl_protocol_3: default
2012-11-12-03:56:30 --> ConvertToTls_4:
2012-11-12-03:56:30 --> establishChannel2_1:
2012-11-12-03:56:30 --> clientHandshake:
2012-11-12-03:56:30 --> clientHelloMajorMinorVersion: 3.1
2012-11-12-03:56:30 --> buildClientHello:
2012-11-12-03:56:30 --> majorVersion: 3
2012-11-12-03:56:30 --> minorVersion: 1
2012-11-12-03:56:30 --> numRandomBytes: 32
2012-11-12-03:56:30 --> sessionIdSize: 0
2012-11-12-03:56:30 --> numCipherSuites: 10
2012-11-12-03:56:30 --> numCompressionMethods: 1
2012-11-12-03:56:30 --> --buildClientHello
2012-11-12-03:56:30 --> Timeout waiting to read socket or accept connection
2012-11-12-03:56:30 --> timeoutMs: 60000
2012-11-12-03:56:30 --> Timed out waiting for incoming SSL/TLS messages.
2012-11-12-03:56:30 --> timeoutMs: 60000
2012-11-12-03:56:30 --> Expected ServerHello but did not receive it.
2012-11-12-03:56:30 --> --clientHandshake
2012-11-12-03:56:30 --> Client handshake failed. (1)
2012-11-12-03:56:30 --> connectionClosed: 0
2012-11-12-03:56:30 --> --establishChannel2_1
2012-11-12-03:56:30 --> --ConvertToTls_4
2012-11-12-03:56:30 --> Failed to convert channel to SSL/TLS
2012-11-12-03:56:30 --> Failed to connect to FTP server.
2012-11-12-03:56:30 --> Failed.
2012-11-12-03:56:30 --> --Connect_Ftp2
2012-11-12-03:56:30 --> --ChilkatLog
2012-11-12-03:56:30 -->
2012-11-12-03:56:30 --> SetProcessComplete()
2012-11-12-03:56:30 --> Sending Email
2012-11-12-03:56:36 --> AutoExit enabled. Complete
Server log:
2012-11-12 20:56:07 100.100.6.158 41079 - 200.200.126.250 21 ControlChannelOpened - - 0 0 0 000fc106-45f3-4ea9-9a6d-74511f2e323f -
2012-11-12 20:56:07 100.100.6.158 41079 - 200.200.126.250 21 AUTH TLS 234 0 0 10 000fc106-45f3-4ea9-9a6d-74511f2e323f -
2012-11-12 20:58:14 100.100.6.158 41079 - 200.200.126.250 21 ControlChannelClosed - - 258 0 0 000fc106-45f3-4ea9-9a6d-74511f2e323f -
The LastErrorText indicates that the server never responds to the ClientHello message which is what begins the SSL/TLS handshake. It should respond with a ServerHello. If this server is on an IP that I can access, then please provide the IP address. Testing would not require a login because we are only testing the establishment of the SSL/TLS channel, which comes before authentication.
I gave it a try and it worked fine for me. Here's my LastErrorText followed by the SessionLog
ChilkatLog: ConnectOnly_Ftp2: DllDate: Nov 12 2012 UnlockPrefix: UNTTSTFTP Username: CK2007:Chilkat Architecture: Little Endian; 32-bit Language: .NET 2.0 VerboseLogging: 0 ProgressMonitoring: enabled: yes heartbeatMs: 0 sendBufferSize: 65536 --ProgressMonitoring ImplicitSsl: 0 AuthTls: 1 AuthSsl: 0 Hostname: 173.192.126.250 Port: 21 IdleTimeoutMs: 60000 ConnectTimeout: 60 HeartbeatMs: 0 ConnectTimeoutMs_1: 60000 calling ConnectSocket2 IPV6 enabled connect with NO heartbeat. This is an IPV4 numeric address... AddrInfoList: AddrInfo: ai_flags: 4 ai_family: 2 ai_socktype: 1 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) --AddrInfo --AddrInfoList Connect using IPV4. ipAddress1: 173.192.126.250 myIP_3: 192.168.1.115 myPort_3: 3822 connect successful (2) Turning on TCP_NODELAY. socketOptions: SO_SNDBUF: 8192 SO_RCVBUF: 8192 TCP_NODELAY: 1 --socketOptions initialStatus: 220 initialResponse: 220 Microsoft FTP Service converting to secure connection... sentCommand: AUTH TLS receivedResponse: 234 AUTH command ok. Expecting TLS Negotiation. ssl_protocol_3: default ConvertToTls_4: establishChannel2_1: clientHandshake: clientHelloMajorMinorVersion: 3.1 buildClientHello: majorVersion: 3 minorVersion: 1 numRandomBytes: 32 sessionIdSize: 0 numCipherSuites: 10 numCompressionMethods: 1 --buildClientHello handshakeMessageType: ServerHello handshakeMessageLen: 0x46 processHandshakeMessage: MessageType: ServerHello Processing ServerHello... ServerHello: MajorVersion: 3 MinorVersion: 1 SessionIdLen: 32 CipherSuite: RSA_WITH_AES_128_CBC_SHA CipherSuite: 00,2f CompressionMethod: 0 Queueing ServerHello message. ServerHello is OK. --ServerHello --processHandshakeMessage handshakeMessageType: Certificate handshakeMessageLen: 0x88b processHandshakeMessage: MessageType: Certificate ProcessCertificates: Certificate: derSize: 1189 certSubjectCN: posbackup1.aptidata.com certSerial: 017177 certIssuerCN: GeoTrust SSL CA --Certificate Certificate: derSize: 989 certSubjectCN: GeoTrust SSL CA certSerial: 0236D0 certIssuerCN: GeoTrust Global CA --Certificate NumCertificates: 2 Queueing Certificates message... --ProcessCertificates --processHandshakeMessage handshakeMessageType: ServerHelloDone handshakeMessageLen: 0x0 processHandshakeMessage: MessageType: ServerHelloDone Queueing HelloDone message. --processHandshakeMessage HandshakeQueue: MessageType: ServerHello MessageType: Certificate MessageType: ServerHelloDone --HandshakeQueue Dequeued ServerHello message. Dequeued Certificate message. DequeuedMessageType: ServerHelloDone OK to ServerHelloDone! No client certificate required by the server. Encrypted pre-master secret with server certificate RSA public key is OK. Sending ClientKeyExchange... Sent ClientKeyExchange message. Sending ChangeCipherSpec... Sent ChangeCipherSpec message. Derived keys. Installed new outgoing security params. Sending FINISHED message.. algorithm: aes keyLength: 128 Sent FINISHED message.. ccsProtocolType: 1 handshakeMessageType: HandshakeFinished handshakeMessageLen: 0xc processHandshakeMessage: MessageType: HandshakeFinished FinishedMsgLen: 12 Queueing Finished message. --processHandshakeMessage Dequeue the FINISHED message... Dequeued Finished message. Handshake completed successfully. --clientHandshake Secure Channel Established. --establishChannel2_1 --ConvertToTls_4 isConnected: 1 successfully converted to secure connection... Success. --ConnectOnly_Ftp2 --ChilkatLog220 Microsoft FTP Service . AUTH TLS 234 AUTH command ok. Expecting TLS Negotiation. . PBSZ 0 200 PBSZ command successful. . PROT P 200 PROT command successful.
Ok, could it be a firewall issue on the client restricting high port numbers for incoming requests? So that the FTP server is unable to respond with the 'hello' message?
Probably a firewall issue, or some sort of software on your client-side that blocks the communications. (If the problem was on the server-side, I'd experience the same issue.) It shouldn't be a port number issue. The FTP control connection to port 21 on the server was established. "Explicit SSL/TLS" means the unencrypted (normal) TCP connection is first established. (And that is successful in your case.) The next step is to convert the connection to SSL/TLS. The "AUTH TLS" command is sent to tell the server of the client's desire to do this, and the SSL/TLS connection handshake begins. The client sends the "ClientHello" and then expects to receive the server's "ServerHello", but it's getting blocked and the client times out