FTPS是一种对常用的文件传输协议(FTP)添加传输层安全(TLS)和安全套接层(SSL)加密协议支持的扩展协议。

FTPS不应与基于SSHSSH文件传输协议或是Secure FTP协议相混淆。

背景

在1971年的FTP草案用于科学与研究网络ARPANET[1]最初只有一小部分军事用地和大学里的少数人使用,可以使用网络的人,任何人都可以操作存取,无视于用户的数据安全和隐私要求。

随着ARPANET逐渐被National Science Foundation Network英语National Science Foundation Network所取代,以及之后随着Internet的普及,上网人口越来越多。客户端到服务端经过的路径越来越长,未经授权的第三方窃听数据传输的机会也因此增加。

1994年,浏览器公司网景开发与发布安全套接层(SSL)的应用层封装[2],该协议使应用程式在进行跨网络通信使用私人和安全的方式,防止窃听、篡改、伪造消息。它可以增加安全性,使用TCP连接,使HTTP经由SSL形成更安全的HTTPS

SSL最终被应用到FTP,RFC草案发表在1996年底。[3]不久之后,官方IANA进行Port端口号注册。然而,RFC却没有定案,直到2005年。[4]

已知的Linux客户端有curl、lftp、wget(版本1.16以上)等。

使用模式

有两种不同模式被开发出来,隐式和显式。

隐式(Implicit)

隐式模式FTPS下不支持协商是否使用加密,所有的连接数据均为加密。客户端必须先使用TLS Client Hello消息向FTPS伺服器进行握手来建立加密连接。如果FTPS伺服器未收到此类消息,则伺服器应断开连接。 为了保持与现有的非FTPS感知客户端的兼容性,隐式FTPS默认在IANA规定的端口990/TCP上监听FTPS控制通道,并在端口989/TCP上监听FTPS数据通道[5]。这使得管理员可以保留端口(控制通道21/TCP与数据通道20/TCP)以兼容原始的FTP。 RFC4217中未定义隐式模式。因此,它被认为是FTP协商TLS/SSL中过时的早期方法。

显式(Explicit)

显式模式(也称为FTPES),FTPS客户端先与伺服器建立明文连接,然后从控制通道明确请求服务端升级为加密连接(Cmd: AUTH TLS)。 控制通道与数据通道默认端口与原始FTP一样。控制通道始终加密,而数据通道是否加密则为可选项。 同时若伺服器未限制明文连接,也可以使用未加密的原始FTP进行连接,也就是说伺服器在相同的端口上同时提供FTP与FTPS服务。

参考文献

  1. ^ RFC-265: File Transfer Protocol (FTP). [2013-09-02]. (原始内容存档于2017-07-08). 
  2. ^ The SSL Protocol, Feb. 9th, 1995. [2013-09-02]. (原始内容存档于2013-05-28). 
  3. ^ RFC draft, Secure FTP Over SSL, revision 1996-11-26. [2013-09-02]. (原始内容存档于2014-05-27). 
  4. ^ RFC-4217: Securing FTP with TLS. [2013-09-02]. (原始内容存档于2013-09-10). 
  5. ^ Service Name and Transport Protocol Port Number Registry. [2019-08-18]. (原始内容存档于2018-01-26).