Sample code for 30+ languages & platforms
Perl

FTPS with Client Cert from Windows Certificate Store

See more FTP Examples

Demonstrates how to do mutual TLS authentication using a client certificate installed in the Windows certificate store.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

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

$ftp = chilkat::CkFtp2->new();

$ftp->put_Hostname("ftp.example.com");

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

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

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

$cert = chilkat::CkCert->new();
$success = $cert->LoadByCommonName("The common name of your certificate");
if ($success == 0) {
    print $cert->lastErrorText() . "\r\n";
    exit;
}

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

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

# If a login is required, then login with the FTP account login/password.
$ftp->put_Username("myLogin");
$ftp->put_Password("myPassword");
$success = $ftp->LoginAfterConnectOnly();
if ($success == 0) {
    print $ftp->lastErrorText() . "\r\n";
    exit;
}

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

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

$success = $ftp->Disconnect();