You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jouko Toivonoja (JIRA)" <ji...@apache.org> on 2017/06/20 11:08:00 UTC

[jira] [Comment Edited] (NET-408) problem connecting to ProFTPD with FTPES

    [ https://issues.apache.org/jira/browse/NET-408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16055584#comment-16055584 ] 

Jouko Toivonoja edited comment on NET-408 at 6/20/17 11:07 AM:
---------------------------------------------------------------

Erick Lichtas, I have tried your fix but I'm facing this:
450 TLS session of data connection has not resumed or the session does not match the control connection

Any ideas why is this happening?

Pretty sure that the server is FileZilla, but unfortunately I have no control over it.


SSL-debug:

{code:java}
***
pool-20-thread-1, WRITE: TLSv1.2 Handshake, length = 80
DefaultQuartzScheduler_Worker-10, called closeInbound()
DefaultQuartzScheduler_Worker-10, fatal error: 80: Inbound closed before receiving peer's close_notify: possible truncation attack?
javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?
%% Invalidated:  [Session-7, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
DefaultQuartzScheduler_Worker-10, SEND TLSv1.2 ALERT:  fatal, description = internal_error
DefaultQuartzScheduler_Worker-10, WRITE: TLSv1.2 Alert, length = 64
This engine was forced to close inbound, without having received the proper SSL/TLS close notification message from the peer, due to end of stream.
DefaultQuartzScheduler_Worker-10, called closeOutbound()
DefaultQuartzScheduler_Worker-10, closeOutboundInternal()
DefaultQuartzScheduler_Worker-10, called closeOutbound()
DefaultQuartzScheduler_Worker-10, closeOutboundInternal()
DefaultQuartzScheduler_Worker-10, WRITE: TLSv1.2 Application Data, length = 6
DefaultQuartzScheduler_Worker-10, called closeOutbound()
DefaultQuartzScheduler_Worker-10, closeOutboundInternal()
DefaultQuartzScheduler_Worker-10, SEND TLSv1.2 ALERT:  warning, description = close_notify
DefaultQuartzScheduler_Worker-10, WRITE: TLSv1.2 Alert, length = 64
DefaultQuartzScheduler_Worker-10, called closeInbound()
DefaultQuartzScheduler_Worker-10, fatal error: 80: Inbound closed before receiving peer's close_notify: possible truncation attack?
javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?
%% Invalidated:  [Session-6, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
DefaultQuartzScheduler_Worker-10, SEND TLSv1.2 ALERT:  fatal, description = internal_error
DefaultQuartzScheduler_Worker-10, Exception sending alert: java.io.IOException: writer side was already closed.
This engine was forced to close inbound, without having received the proper SSL/TLS close notification message from the peer, due to end of stream.
{code}



was (Author: jtoivonoja):
Erick Lichtas, I have tried your fix but I'm facing this:
450 TLS session of data connection has not resumed or the session does not match the control connection

Any ideas why is this happening?

Pretty sure that the server is FileZilla, but unfortunately I have no control over it.

> problem connecting to ProFTPD with FTPES
> ----------------------------------------
>
>                 Key: NET-408
>                 URL: https://issues.apache.org/jira/browse/NET-408
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 2.2, 3.0
>         Environment: ProFTPD 1.3.3d on SUSE Linux Enterprise Server 10.1 32bit, Kernel 2.6.16.46-0.12-default (config file attached)
> ProFTPD 1.3.3d on OpenSUSE 64bit Linux 2.6.34.8-0.2-desktop
> Java 1.5
>            Reporter: Michael Voigt
>         Attachments: BCFTPSClient.java, ftpes.jpg, FTPSClientWithTLSResumption.zip, proftpd.conf, PTFTPSClient.java
>
>
> I have a problem with the FTPClient connecting to a ProFTPD server.
> If the server uses the configuration option "TLSProtocol TLSv1", I
> cannot connect to it at all. I recieve the following error message:
> - javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
> On the server side I see in the log:
> unable to accept TLS connection: protocol error:
> -  (1) error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert
> certificate unknown
> - TLS/TLS-C negotiation failed on control channel
> If the server uses the configuration option "TLSProtocol SSLv23", I
> can connect to it but I cant transfer any files. In the server log I
> see:
> - starting TLS negotiation on data connection
> - TLSv1/SSLv3 renegotiation accepted, using cipher RC4-MD5 (128 bits)
> - client did not reuse SSL session, rejecting data connection (see
> TLSOption NoSessionReuseRequired)
> - unable to open data connection: TLS negotiation failed
> If I add the NoSessionReuseRequired parameter to the ProFTPD config
> everything works fine.
> Here is my code:
>                FTPClient ftpClient = new FTPClient();
>                ftpClient = new FTPSClient("TLS");
>                // this throws an exception with TLSProtocol TLSv1
>                ftpClient.connect(host, port);
>                int reply = ftpClient.getReplyCode();
>                if (!FTPReply.isPositiveCompletion(reply)) {
>                        ftpClient.disconnect();
>                        log.error("The FTP Server did not return a positive completion reply!");
>                        throw new FtpTransferException(ECCUtils.ERROR_FTP_CONNECTION);
>                }
>                boolean loginSuccessful = ftpClient.login(userName, password);
>                if (!loginSuccessful) {
>                        log.error("Login to the FTP Server failed! The credentials are not valid.");
>                        throw new FtpTransferException(ECCUtils.ERROR_FTP_LOGIN);
>                }
>                ftpClient.execPBSZ(0);
>                ftpClient.execPROT("P");
>                boolean success = ftpClient.storeFile(fileName, fis);
>                if (!success) {
>                        // this is false if "NoSessionReuseRequired" is not set
>                }
> Now my question is if it is generally possible to connect to a server
> with "TLSProtocol TLSv1" or "TLSProtocol SSLv23" without the
> "NoSessionReuseRequired" parameter? Could someone provide a piece of
> example code for this?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)