Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
Secure FTP with Client CertificateChilkat FTP2 provides the ability to use a client certificate with secure FTP (implicit or explicit SSL/TLS). This example demonstrates how to load a certificate from a .pfx and use it as the client-side SSL cert. Note: Client-side certificates are only needed in situations where the server demands one. CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @sTmp0 nvarchar(4000) DECLARE @ftp int EXEC @hr = sp_OACreate 'Chilkat.Ftp2', @ftp OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int -- Any string unlocks the component for the 1st 30-days. EXEC sp_OAMethod @ftp, 'UnlockComponent', @success OUT, 'Anything for 30-day trial' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- You may use this account for testing. -- This account allows for directory listings and files -- to be downloaded. However, file uploads are not allowed. EXEC sp_OASetProperty @ftp, 'Hostname', 'ftp.secureftp-test.com' EXEC sp_OASetProperty @ftp, 'Username', 'test' EXEC sp_OASetProperty @ftp, 'Password', 'test' -- Establish an explicit secure channel after connection -- on the standard FTP port 21. EXEC sp_OASetProperty @ftp, 'AuthTls', 1 -- The Ssl property is for establishing an implicit SSL connection -- on port 990. Do not set it. EXEC sp_OASetProperty @ftp, 'Ssl', 0 -- Load a certificate from a .pfx -- A PFX may contain several certs, including the certificates -- in a chain of authority. DECLARE @certStore int EXEC @hr = sp_OACreate 'Chilkat.CertStore', @certStore OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @password nvarchar(4000) SELECT @password = '***' -- Load the certs from a PFX into an in-memory certificate store: EXEC sp_OAMethod @certStore, 'LoadPfxFile', @success OUT, 'chilkat.pfx', @password IF @success <> 1 BEGIN EXEC sp_OAGetProperty @certStore, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Find the exact cert we'll use: DECLARE @cert int EXEC sp_OAMethod @certStore, 'FindCertBySubject', @cert OUT, 'Chilkat Software, Inc.' IF @cert Is NULL BEGIN PRINT 'Certificate not found!' RETURN END -- Use this certificate for our secure (SSL/TLS) connection: EXEC sp_OAMethod @ftp, 'SetSslClientCert', NULL, @cert -- Connect and login to the FTP server. The connection is -- made secure because of the AuthTls setting. EXEC sp_OAMethod @ftp, 'Connect', @success OUT IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END ELSE BEGIN -- LastErrorText contains information even when -- successful. This allows you to visually verify -- that the secure connection actually occurred. EXEC sp_OAGetProperty @ftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 END PRINT 'Secure FTP Channel Established!' -- Do whatever you're doing to do ... -- upload files, download files, etc... EXEC sp_OAMethod @ftp, 'Disconnect', NULL -- The LastErrorText provides a detailed log of the -- SSL connection for both success and failed connections. -- Here is an example of a successful connection. -- The client certificate is logged as "ClientCertDN": -- ChilkatLog: -- Connect: -- DllDate: Aug 15 2007 -- Hostname: ftp.secureftp-test.com -- Port: 21 -- IdleTimeoutMs: 60000 -- ConnectTimeout: 60 -- HeartbeatMs: 0 -- initialStatus: 220 -- initialResponse: 220 FileZilla Server version 0.9.23 beta -- converting to secure connection... -- ClientCertDN: C=US, S=Illinois, L=Wheaton, O="Chilkat Software, Inc.", OU=Secure Application Development, CN="Chilkat Software, Inc." -- SSL Server Certificate not verified. -- ConnectionInfo: -- protocol: TLS1 -- cipher: RC4 -- cipherStrength: 128 -- hash: MD5 -- hashStrength: 128 -- keyExchange: RSA -- keyExchangeStrength: 1024 -- Secure Channel Established. -- successfully converted to secure connection... -- Features: 211-Features: -- MDTM -- REST STREAM -- SIZE -- MLST type*;size*;modify*; -- MLSD -- AUTH SSL -- AUTH TLS -- UTF8 -- CLNT -- MFMT -- 211 End -- Directory listings are utf-8 -- Logging in... -- Username: test -- Login successful. -- Connect successful END GO |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.