Sample code for 30+ languages & platforms
Delphi ActiveX

FTP Connect, Examine Server Certificate, and then Authenticate

See more FTP Examples

Demonstrates how to connect to an FTP server, examine the server's SSL/TLS certificate, and then, if it meets the application's security requirements, proceed to authenticate.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
ftp: TChilkatFtp2;
serverCert: TChilkatCert;

begin
success := 0;

// This example assumes Chilkat Ftp2 to have been previously unlocked.
// See Unlock Ftp2 for sample code.

ftp := TChilkatFtp2.Create(Self);

ftp.Hostname := 'www.authtls-ftps-server.com';
ftp.Username := 'FTP_LOGIN';
ftp.Password := 'FTP_PASSWORD';
ftp.AuthTls := 1;
ftp.Port := 21;

// Connect to the FTP server using explicit TLS (AUTH TLS).
success := ftp.ConnectOnly();
if (success = 0) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

// Get the FTP server's certificate.
serverCert := TChilkatCert.Create(Self);
success := ftp.GetServerCert(serverCert.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

// Now that we have the certificate, we can check it in any way we desire.
// (See the online reference documentation for the certificate object's methods
// and properties)...

// Assuming the certificate is OK, proceed to authenticate with the FTP server.
success := ftp.LoginAfterConnectOnly();
if (success = 0) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

// 
// Proceed with uploading/download files, etc...
// 

ftp.Disconnect();
Memo1.Lines.Add('Success.');
end;