Sample code for 30+ languages & platforms
Perl

FTPS with Mutual TLS Authentication (TLS Client Certificate)

See more FTP Examples

Demonstrates how to do mutual TLS authentication (using a client certificate from a .pfx/.p12).

Chilkat Perl Downloads

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

my $ftp = Chilkat2::Ftp2->new;

$ftp->Hostname('ftp.example.com');
$ftp->Port(21);

# If using implicit TLS, you probably want port 990..
$ftp->Port(990);

# Set this to 0 for implicit TLS, otherwise set to 1 for explicit TLS (where port is typically 21).
$ftp->AuthTls(0);

# Set this to 1 for implicit TLS, otherwise set to 0.
$ftp->Ssl(1);

my $cert = Chilkat2::Cert->new;
my $success = $cert->LoadPfxFile('qa_data/pfx/example.pfx', 'pfx_password');
if (!$success) {
    print $cert->LastErrorText, "\n";
    exit;
}

# Use this certificate for our TLS mutually authenticated connection:
$success = $ftp->SetSslClientCert($cert);
if (!$success) {
    print $cert->LastErrorText, "\n";
    exit;
}

# Establish the TLS connection with the FTP server.
$success = $ftp->ConnectOnly();
if (!$success) {
    print $ftp->LastErrorText, "\n";
    exit;
}

# If a login is required, then login with the FTP account login/password.
$ftp->Username('myLogin');
$ftp->Password('myPassword');
$success = $ftp->LoginAfterConnectOnly();
if (!$success) {
    print $ftp->LastErrorText, "\n";
    exit;
}

# Do whatever you're doing to do ...
# upload files, download files, etc...

# .....
# .....

$success = $ftp->Disconnect();