Sample code for 30+ languages & platforms
PHP ActiveX

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 PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

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

$ftp = new COM("Chilkat.Ftp2");

$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;

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

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

// Establish the TLS connection with the FTP server.
$success = $ftp->ConnectOnly();
if ($success == 0) {
    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 == 0) {
    print $ftp->LastErrorText . "\n";
    exit;
}

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

// .....
// .....

$success = $ftp->Disconnect();

?>