Sample code for 30+ languages & platforms
CkPython

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 CkPython Downloads

CkPython
import sys
import chilkat

success = False

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

ftp = chilkat.CkFtp2()

ftp.put_Hostname("ftp.example.com")
ftp.put_Port(21)

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

# Set this to False for implicit TLS, otherwise set to True for explicit TLS (where port is typically 21).
ftp.put_AuthTls(False)

# Set this to True for implicit TLS, otherwise set to False.
ftp.put_Ssl(True)

cert = chilkat.CkCert()
success = cert.LoadPfxFile("qa_data/pfx/example.pfx","pfx_password")
if (success == False):
    print(cert.lastErrorText())
    sys.exit()

# Use this certificate for our TLS mutually authenticated connection:
success = ftp.SetSslClientCert(cert)
if (success == False):
    print(cert.lastErrorText())
    sys.exit()

# Establish the TLS connection with the FTP server.
success = ftp.ConnectOnly()
if (success == False):
    print(ftp.lastErrorText())
    sys.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 == False):
    print(ftp.lastErrorText())
    sys.exit()

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

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

success = ftp.Disconnect()