Sample code for 30+ languages & platforms
Objective-C

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 Objective-C Downloads

Objective-C
#import <CkoFtp2.h>
#import <CkoCert.h>

BOOL success = NO;

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

CkoFtp2 *ftp = [[CkoFtp2 alloc] init];

ftp.Hostname = @"ftp.example.com";

// If using implicit TLS, you probably want port 990..
ftp.Port = [NSNumber numberWithInt:990];

// Set this to NO for implicit TLS, otherwise set to YES for explicit TLS (where port is typically 21).
ftp.AuthTls = NO;

// Set this to YES for implicit TLS, otherwise set to NO.
ftp.Ssl = YES;

CkoCert *cert = [[CkoCert alloc] init];
success = [cert LoadByCommonName: @"The common name of your certificate"];
if (success == NO) {
    NSLog(@"%@",cert.LastErrorText);
    return;
}

// Use this certificate for our TLS mutually authenticated connection:
success = [ftp SetSslClientCert: cert];
if (success == NO) {
    NSLog(@"%@",cert.LastErrorText);
    return;
}

// Establish the TLS connection with the FTP server.
success = [ftp ConnectOnly];
if (success == NO) {
    NSLog(@"%@",ftp.LastErrorText);
    return;
}

// If a login is required, then login with the FTP account login/password.
ftp.Username = @"myLogin";
ftp.Password = @"myPassword";
success = [ftp LoginAfterConnectOnly];
if (success == NO) {
    NSLog(@"%@",ftp.LastErrorText);
    return;
}

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

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

success = [ftp Disconnect];