Sample code for 30+ languages & platforms
Java

FTP over Implicit TLS (Ssl, AuthSsl, AutoFix)

See more FTP Examples

Demonstrates the SSL/TLS connection-mode properties Ssl, AuthSsl, and AutoFix. Setting Ssl true selects implicit FTPS, in which TLS begins immediately after the TCP connection on port 990.

Background: FTP has two ways to add TLS: implicit (this example) starts encrypted from the first byte on a dedicated port, 990; explicit (via AuthTls) connects in the clear on port 21 and issues AUTH TLS to upgrade. Explicit is the modern standard; implicit persists mainly for legacy servers. AuthSsl is an obsolete AUTH SSL variant to avoid. AutoFix, on by default, infers the mode from the port — disable it when you set these properties explicitly so it does not override your choice.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Ftp2;

public class ChilkatExample {

    public static void main(String[] args) {
        Ftp2 ftp = new Ftp2();

        ftp.setHostname("ftp.example.com");
        ftp.setUsername("myFtpLogin");

        // Normally you would not hard-code the password in source.  You should instead obtain it
        // from an interactive prompt, environment variable, or a secrets vault.
        ftp.setPassword("myPassword");

        // Ssl = true selects IMPLICIT FTPS: TLS begins immediately after the TCP connection, before
        // the greeting.  Port 990 is conventional for implicit FTPS.  Ssl takes priority over AuthTls
        // and AuthSsl.
        ftp.setSsl(true);
        ftp.setPort(990);

        // AuthSsl selects the legacy AUTH SSL command and is very uncommon -- use AuthTls (explicit
        // FTPS) for modern servers instead.  Left false here.
        ftp.setAuthSsl(false);

        // AutoFix (default true) automatically adjusts Ssl/AuthTls/AuthSsl based solely on the Port
        // (21 or 990).  Disable it when setting these properties explicitly, as here.
        ftp.setAutoFix(false);

        try {
            ftp.connect();
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("Connected using implicit FTPS.");

        try {
            ftp.disconnect();
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }
    }
}