ftps - FTP-SSL and FTP-TLS (RFC4217) - the state of play

Document control information:-


Created - 14th July 2000 by Paul Ford-Hutchinson (paul.ford-hutchinson@gxs.com)
Last Updated - 16th Feb 2006 by Paul Ford-Hutchinson

NEWS


16th Feb 2006 - Added OneButton FTP client (thanks Aaron Jacobs)
16th Feb 2006 - Updated ftpswrap server proxy (thanks Lex Cunningham)
16th Feb 2006 - Added Reflection client (Thanks Geoff Pfander)
16th Feb 2006 - Added SynchronEX+ client (Thanks Robert Kiendl)
16th Feb 2006 - Updated Gene 6 FTP Server (thanks Patrik Lundquist)
16th Feb 2006 - Added FireFTP client (Thanks Mime Cuvalo)
16th Feb 2006 - Added SftpPlus client and server (thanks Tim Adams)
16th Feb 2006 - Added FtpXfer client (thanks Wang Xi)
16th Feb 2006 - Updated Glub client and library (thanks Gary from Glub)
23rd Jan 2006 - renamed ftp-ssl to ftp-tls to keep John happy
15th Dec 2005 - please note new contact information. I now work for GXS.
1st Nov 2005 - **DOCUMENT STATUS UPDATE** Issued as RFC4217
21st Oct 2005 - draft-fordh-ftp-ssl-firewall-07.txt released
21st Oct 2005 - Now hosting Pete Runestig's client here (All respect to Pete - RIP)
21st Oct 2005 - Removed Pete Runestig's server - now part of ProFTPD server
21st Oct 2005 - Added historical copies of the firewall draft (a do-it-yourself spot-the-difference competition :-))
21st Oct 2005 - Updated Lund client and server (thanks Jim Heifetz)
21st Oct 2005 - Added Filezilla server (thanks Gautier Husson)
21st Oct 2005 - Updated curl client and libcurl library (thanks Daniel Stienberg)
21st Oct 2005 - Added Cyberduck client (thanks Gary from Glub)
21st Oct 2005 - Added Glub library (thanks Gary from Glub)
21st Oct 2005 - Updated Glub client (thanks Gary from Glub)
8th Jun 2005 - Updated M2Crypto client and server (thanks Paul Rogers)
8th Jun 2005 - Added ftp Guardian client proxy and server proxy (thanks Scott Bolton)
8th Jun 2005 - Updated core-ftp client (thanks Dan Mahoney)
20th Apr 2005 - Updated TD-Access client and TDNgine server info (thanks Peter Vander Woude)
20th Apr 2005 - Updated MOVEit client and server info (thanks Jonathan Lampe)
20th Apr 2005 - Added BitKinex client (thanks Jeff Apolis)
20th Apr 2005 - Updated vsftpd server (thanks Paul Rogers)
18th Mar 2005 - Draft status update in RFC Editor's queue
24th Feb 2005 - **DRAFT STATUS UPDATE** Approved by IESG as a Proposed Standard
23rd Feb 2005 - Updated OS/400 client (thanks me)
23rd Feb 2005 - Added edtFTPnet client (thanks Bruce Blackshaw)
9th Feb 2005 - draft-murray-auth-ftp-ssl-16.txt released
9th Feb 2005 - draft-fordh-ftp-ssl-firewall-06.txt released
9th Feb 2005 - Updated frox proxy (thanks James Hollingshead)
3rd Feb 2005 - Added frox proxy (thanks James Hollingshead)
2nd Feb 2005 - Updated lftp client (thanks Alexander Lukyanov)
2nd Feb 2005 - Added Sambar server (thanks Ken Johanson)
2nd Feb 2005 - Updated Suse proxy (thanks Marius Tomaschewski)
2nd Feb 2005 - Added Trailblazer PC client (thanks Bobby Conway)
2nd Feb 2005 - Updated ZMOD AS/400 client and server (thanks Bobby Conway)
2nd Feb 2005 - Updated bsdftpd-ssl server (thanks Nick Leuta)
2nd Feb 2005 - Moved hosting providers due to broken server on old one. Site was down for about a week - sorry.
10th Jan 2005 - Updated Debian ftp-ssl client (thanks SunDevil)
10th Jan 2005 - Added RBrowser client (thanks Jakub Nesetril)

More change history in the HTML source if you are interested

Status of the FTP/TLS document


FTP over TLS has now been issued as
RFC4217. It is a Standards Track RFC.

snapshot


There are at least 45 available
client implementations that support the AUTH command.
There are at least 30 available server implementations that support the AUTH command.
Some people have developed libraries for various languages
There are also some application proxys


ftps - an overview

Interoperating ftp and ssl has been defined in three ways.

According to the current internet draft specification (draft-murray-auth-ftp-tls-16.txt) only one of them is now considered valid.
They are:

"SSL connect"
Connect to a separate port (defined by IANA to be 990) and perform SSL negotiation. The default data port (U-1 -> 989) also has implicit SSL protection. THIS IS BAD why ?
"AUTH SSL"
Connect as usual to port 21 and use "AUTH SSL" or "AUTH TLS-P" to ask for SSL negotiation and implicitly protect further data connections. THIS IS BAD why ? (There is also a compatibility problem here, in that Tim Hudson's original code gave a '334' reply to AUTH SSL - this is now considered harmful and '234' should be used. Clients are OK because they can accept both - but there still exist some broken servers which send '334')
"AUTH TLS"
Connect as usual to port 21 and use "AUTH TLS" or "AUTH TLS-C" to ask for SSL negotiation without implicitly protecting the data connection (this is achieved with the "PROT P" command) THIS IS GOOD
Why are they bad ?

From draft-murray-auth-ftp-ssl-07.txt

A.  Deprecated SSL negotiation mechanisms


There are two other mechanisms that have been used for FTP over SSL,
these mechanisms do not conform to [RFC-2228] and so are now
deprecated.  They are documented below.

i) Implicit SSL protection of the FTP session

There is a port, registered with the IANA, for secure FTP using
ssl {FTP-TLSPORT}.  This approach can be likened to the [RFC-2818]
approach for https, in that the SSL negotiation happens upon
connection  (for the control and all data connections).  This
approach is not favoured by the IETF and should not be used for
new FTP-TLS implementations.

ii) Protection using the 'AUTH SSL' command

Early implementations of the negotiated SSL upgrade, using the
AUTH command implemented it in a slightly different way that that
used in this document.

The parameter on the the AUTH command is 'SSL' and not 'TLS' and,
once the control connection is secured, the state of the data
connection is implicitly secure.  This approach is in direct
disagreement with [RFC-2228] which requires the PROT command to be
issued and so should not be used in new implementations

As a historical note, very early implementation of this approach
issued and expected a '334' reply from the 'AUTH SSL' command.
This should be contrasted to the '234' reply defined in this
document.

Related reading

Unrelated reading

Historical copies of the FTP/TLS draft

Historical copies of the Firewall draft

Software versions

Where a version is listed against a particular product, it is meant to identify the earliest version that the FTP/TLS feature appeared in.

I do not intend to update version numbers when the FTP/TLS capability has not altered. If a product adds or removes an FTP/TLS feature then I will list that version as a new item. (I.E. if version x of product Y supports AUTH SSL and version x+4 adds support for AUTH TLS, there will be two entries in the table for product Y.)


Content Policy

The contents of this page have not been verified by me. If you feel any of the information on the page is incorrect, please send me an e-mail with any additions/deletions/corrections that you feel need to be made. (This goes for broken links too). If you are telling me about a new implementation, then please, please provide me with the tabular information. It's amazing how hard (or, more often than not, impossible) it is to glean this from a web-site.

I do keep these pages updated, but tend to 'batch-up' requests. I do apologise if you think you are being ignored - but I have little time to do this. Once I have updated the page, I'll let you know.


X.509 Client Auth

SSL (TLS) works in two ways.

Server Authentication
With server authentication, the server's identity is demonstrated by the X.509 certificate (or other token e.g. kerberos) but the client is still anonymous. The session is encrypted and has integrity, but the client authentication is left to the application protocol (e.g. "PASS" command in FTP)
Client and Server (Mutual) Authentication
With mutual authentication, both the client and server are authenticated using X.509 certs (or other mechanisms e.g. kerberos). Once the handshake has finished the server has authenticated the client. There may or may not be any mapping between the authenticated client in the SSL session and the user indicated on the FTP "USER" command.

Where Mutual Authentication is supported, this document tries to explain how the client handles client certs (which cert to present to which server) and how the server uses the identity represented to map to an authorised user.


Client implementations

name type SSL connect AUTH SSL AUTH TLS libraries platform(s) X.509 Client Auth Other
C-kermit 8.0 client YES YES YES openssl AIX, FreeBSD, HP-UX, IRIX, Linux, OpenBSD, QNX, SCO OSR5, Solaris, SunOS, UnixWare Yes [1]
Kermit 95 2.1 client YES YES YES openssl Windows 95, 98, ME, NT, 2000, XP; OS/2 Yes [2]
ftp-tls client NO NO YES openssl linux Yes [1] Pete Runestig's client based on OpenBSD 2.7 client, now updated with CCC support
Secure Transport client NO YES YES openssl WIN, unix, linux, OS/400, MVS Yes [1], [2] Also supports Valicert FTPS extensions
M2Crypto (python) client NO YES YES openssl WIN
*IX
? Requires SWIG 1.3.6
lftp client YES YES YES OpenSSL *IX ?
cleo client NO YES YES ? WIN Yes [2]
z/OS (PDF) client YES YES YES IBM skit IBM z/OS Yes See Chapter 2
MOVEit client YES YES YES MS Crypto API WIN YES Also supports many hardware tokens
ZMOD Exchange FTP client YES YES YES ? OS/400 ?
Sterling Commerce CONNECT:Enterprise client NO NO YES Certicom/Bsafe WIN and *IX Yes
LundFXP client NO YES YES openssl WIN
Mac
*IX
?
BSDFTPD-SSL client NO YES YES openssl WIN
*IX
Yes [1] Accepts both 234 and 334 replies
SmartFTP client YES YES YES schannel (MS Crypto API) WIN Yes
pftp client NO NO YES openssl linux and WIN No
Seagull Secure FTP client YES NO YES openssl WIN32 Yes was BlueZone ftp
pavuk client NO NO YES openssl *IX ? seems to have an issue with closing data connections
XFB.FTP CS client YES YES YES cryptix WIN NT, 2K, XP; Unix AIX, HP, linux, Digital Sun, TRU 64 Yes [2] v1.1.1
SecurFTP client NO YES YES openssl HP NonStop Yes [1] Runs on Guardian personality
FlashFXP client ? ? YES ? WIN ? ?
COREFTP Lite client YES YES YES Openssl/Windows (selectable) WIN ?

Free. Pro version commerical. (Free .edu site license for lite version that removes splash screen delay).

Also handles SFTP-via-ssh. Allows toggling of encrypted data/file listing sessions if server supports.

SDI FTP client ? ? YES ? WIN ? ?
edtFTPj/SSL client YES YES YES Cryptix Pure Java Yes Based on the edtFTPj libraries
SafeTGate:FTP client NO YES YES Insession developed NonStop Server Yes
retawq client YES YES YES OpenSSL; GnuTLS *IX No Accepts both 234 and 334 replies
OS/400 (V5R2) (PDF) client YES YES YES IBM skit OS/400 Yes The base O/S ftp client has SSL support (look for SECOpen in PDF file)
curl client YES YES YES openssl or GnuTLS
  • *IX
  • Win*
  • Mac X
  • Many many more - see web site
Yes [1] Command line, non-interactive OSS client. Accepts both 234 and 334 reply
turboftp client YES YES YES ? Win* ?
kasablanca client NO NO YES openssl KDE (linux) ?
UnlimitedFTP client YES YES YES JSSE java applet ?
Proxykit client NO NO YES openssl windows plugin for 'far' file manager (http://www.rarsoft.com/)
FileZilla client YES YES YES openssl WIN No GNU GPL.
FTPeel client NO NO YES ? Mac OS X No
FEG Inetutils client NO NO YES GNU TLS *IX Yes
Captain FTP client NO NO YES Mac OS X
GetIT FTP client NO YES YES openssl WIN Yes [2]
Kasablanca FTP client NO NO YES openssl *IX ?
CuteFTP Professional and HOME client YES YES YES openssl/sslEAY WIN Yes [2] SSL/TLS, SSH, OTP support
PHP scripting language client NO NO YES openssl/sslEAY WIN ? PHP is a scripting language
RBrowser client NO NO YES Mac OS X ?
ZMOD Exchange FTP client YES YES YES ? Windows ?
edtFTPnet client YES YES YES Mentalis Windows .NET Yes
BitKinex client YES NO YES ? Windows ?
Glub client YES YES YES JSSE WIN, mac, *IX (java) YES Also have a bean that supports all functions
Cyberduck client NO NO YES ? Mac OS X ?
SftpPlus client YES YES YES openssl
  1. AIX
  2. HP-UX
  3. Linux
  4. Solaris
  5. Tru64
  6. Windows
YES
FireFTP client YES YES YES openssl Firefox plugin Runs as a plugin to Firefox
SynchronEX+ client NO YES YES openssl Windows and linux ? Automatic File Synchronizer
Reflection client NO YES YES ?
  1. HP with NS/VT
  2. IBM
  3. UNIX and OpenVMS
  4. X
? Also includes SSH and kerberos
OneButton FTP client YES NO YES Apple SecureTransport Mac OS X NO
TD-Access (formerly EZ-Access) client NO YES (TLS-P) NO ? WIN Yes [2]
WS_FTP client NO YES NO ? WIN Yes [2]
FTPvoyager 9.0 client YES YES NO ? WIN (shareware) ?
openssl/ssleay client NO YES NO openssl/sslEAY *IX Yes [1]
netfinder client NO YES NO ? MAC ?
IglooFTP Pro client NO YES NO openssl WIN YES - per host From v3
IglooFTP Pro client NO YES NO openssl linux YES - per host X-windows (GTK)
client NO YES NO openssl/sslEAY linux Yes [1] Based on Tim Hudsons original patches to the BSD client
South Rivers - WebDrive client YES YES NO openssl Windows 9x/NT/2K/XP No Maps a Windows Network Drive letter to a remote FTP server
jftp client YES YES NO ? Lots (native java GUI application) ?
Incredible ftps client ? ? ? openssl/sslEAY WIN
linux
? Documentation is in Greek !
Net Transport client ? ? ? ? WIN MS Crypto API Download only
FtpXfer client ? ? ? ? WIN MS Crypto API

X.509 Client Auth Options

[1]
Cert and Key passed on Command Line
[2]
Cert and Key stored in Profile

Server implementations

name type SSL connect AUTH SSL AUTH TLS libraries platform(s) X.509 Client Auth Other
Proftpd server NO YES YES openssl linux, solaris, *BSD, AIX, Tru64, Cygwin Yes [1]
IE-FTP server YES YES YES IBM skit AIX Yes [3] Interface to IBM EDI services
Secure Transport server NO YES YES openssl Windows, solaris, AIX, linux, HP-UX Yes [1], [2] Also supports Valicert FTPS extensions
M2Crypto (python) server NO YES YES openssl WIN
*IX
? Requires SWIG 1.3.6
OS/400 (V5R1) (PDF) server YES YES YES IBM skit OS/400 Yes [2] The base O/S ftp server has SSL support
wftpd server YES YES YES MS CryptoAPI WIN NT, 2K, XP ? Tested with Cute and Kermit (By vendor)
z/OS (PDF) server YES YES YES IBM skit IBM z/OS Yes [2] See Chapter 2
WS_FTP Server server NO YES YES ? WIN NT/2K Yes [2]
RaidenFTPD server YES YES YES openssl WIN ?
orenosv server YES YES YES openssl WIN NT, 2K, XP ?
Trailblazer ZMOD ftp server server YES YES YES OS/400 ?
Sterling Commerce CONNECT:Enterprise server NO YES YES Certicom / Bsafe Unix Yes
LundFTPD server NO YES YES openssl WIN
Mac
*IX
?
BSDFTPD-SSL server NO YES YES openssl *IX Yes Has extra cert mapping facilities - see This document
MOVEit DMZ server YES YES YES MS Crypto API WIN 2K

Windows 2003

YES Available in English, French and Spanish.

SSH (SFTP,SCP2) support also

covalent FTP server YES YES YES RSA BSafe WIN 2K/XP, HPUX, Solaris, linux Yes [1] Module for apache 2.0
SecurFTP server NO YES YES openssl HP NonStop Yes [1] Runs on Guardian personality
XFB.Gateway server YES YES YES axway developed WIN NT, 2K, XP; Unix AIX, HP, linux, Digital Sun Yes v6.70
South River - Titan FTP server server YES YES YES OpenSSL/Cryptlib WIN 9x, NT, 2K, XP Yes [2]
Netware FTP server server YES YES YES ? Netware 6.5 (and 5.1 and 6.0) ?
Pure FTPD server NO NO YES Openssl *IX NO OSS server - does not encrypt data connection :-(
SafeTGate:FTP server NO YES YES Insession developed NonStop Server Yes
glftpd server ? ? YES ? linux
Free BSD
Solaris x86
AIX
Open BSD
?
wu_ftpd 2.8.0 server NO YES YES openssl linux
Free BSD
Solaris x86
AIX
Open BSD
Yes Still in beta
edtFTPD server NO YES YES openssl Windows Yes [1] Based on Proftpd. Has GUI
Gene 6 FTP Server server YES YES YES openssl Windows ?
vsftp server NO YES YES openssl *IX ? FTP server with security as a stated objective.
GlobalSCAPE Secure FTP Server server YES YES YES OpenSSL WinNT/XP 2000/2003 YES SSH (SFTP) support also
Sambar Server server YES NO YES OpenSSL Windows and linux YES
FileZilla server YES YES YES openssl WIN No GNU GPL.
SftpPlus server YES YES YES openssl
  1. AIX
  2. HP-UX
  3. Linux
  4. Solaris
  5. Tru64
  6. Windows
YES
openssl/ssleay server NO YES NO openssl/sslEAY *IX ?
TDNgine server ? ? ? ? ? ?
Incredible ftps server ? ? ? openssl/sslEAY linux ? Documentation is in Greek !
SurgeFTP server ? ? ? ? WIN NT
linux
?
ShareIT FTP server ? ? ? WIN ?

X.509 Client Auth Options

[1]
Optional
[2]
Can map to base O/S userid
[3]
Required

Library implementations

name type SSL connect AUTH SSL AUTH TLS libraries platform(s) X.509 Client Auth Other
edtFTPj library NO YES YES Cryptix Pure Java Yes
curl library YES YES YES openssl or GnuTLS
  • *IX
  • Win*
  • Mac X
  • Many many more - see web site
Yes [1] Many many interfaces: perl, C, C++, java, pascal and Tcl to name but a few. Accepts both 234 and 334 replies
ftplibpp library NO NO YES openssl Provided as C++ source ?
Glub library YES YES YES JSSE WIN, mac, *IX (java) YES

Proxy implementations

name type SSL connect AUTH SSL AUTH TLS libraries platform(s) X.509 Client Auth Other
tlswrap client proxy NO NO YES openssl linux and WIN ? SSLifies any PASV capable ftp client
ftpswrap server proxy YES YES YES JSSE WIN
OS X
*IX
? SSLifies control and Data in both active and passive modes
Seagull Security Server server proxy YES NO YES openssl WIN32 Yes SSLifies any PASV enabled ftp server
SecurFTP client proxy NO YES YES Phaos Crypto Toolkit, see http://www.phaos.com/products/crypto/crypto.html any platform with a Java 1.2 virtual machine No Tested with Win32, *IX. Win32 has GUI to ease configuration. Other platforms are command-line driven
ftp Guardian client proxy YES NO YES ? WIN YES Free
ftp Guardian Server server proxy YES NO YES ? WIN YES Front to IIS
frox client proxy NO YES NO openssl linux Allows a standard client to talk to a protected server
SuSE proxy NO NO NO openssl linux ? Not sure what this does. Not FTP/TLS apparently though :-)
delegate proxy ? ? ? ? ? ?

Broken Links

These implementations seem to have disappeared - if you come across them, please send me the link.
name type SSL connect AUTH SSL AUTH TLS libraries platform(s) X.509 Client Auth Other
wuFTPD/SSL (ii) (Broken Link) server NO YES (with the broken 334 reply) NO openssl *IX ? A Patch for an old wuftpd
ftpsd (Broken Link) server NO YES (with the broken 334 reply) NO openssl ? ? Based on Tim Hudsons original patches to the BSD client/server
wuFTPD/SSL
(i) (Broken Link)
server ? ? ? openssl ? ?

Coming Soon

Projects that I am aware of that will come to fruition soon

wu_ftpd
I have written SSL patches for WU-FTPD 2.7.0 (now 2.8.0) and 2.6.1. (now 2.6.2) I have IBM Legal IP approval to release them to the source community. I have sent the 2.8.0 patches to the wu-ftpd team. Get the latest CVS snapshot of 2.8.0 from the wu-ftp development site (note - 2.8.0 is still work in progress and the 2.6.x patches are no longer kept up to date)

colour version - mono version