我被要求支持隐式和显式FTPS(也称为FTPES)。我们目前正在使用.NET FtpWebRequest。是否FtpWebRequest支持两种类型的FTPES,有什么区别?
FtpWebRequest
谢谢
据我所知,当前(.NET 2.0和3.5)的FtpWebRequest版本仅支持显式SSL。
实际上,.NET 2.0当前不支持隐式SSL,仅支持显式。我们将考虑在以后的版本中添加它。 JonCole- MSDN论坛上的 MSFTModerator
实际上,.NET 2.0当前不支持隐式SSL,仅支持显式。我们将考虑在以后的版本中添加它。
JonCole- MSDN论坛上的 MSFTModerator
如果需要同时使用隐式和显式TLS / SSL,则必须尝试使用第三方FTP / SSL组件之一。以下代码使用了我们的Rebex FTP / SSL,摘自教程页。
显式TLS / SSL
客户端以通常的非保护方式连接到FTP服务器,通常将端口21分配给FTP协议。当需要使用SSL保护连接时,将初始化SSL协商,确保控制连接的安全,并保护所有后续通信。
// Create an instance of the Ftp class. Ftp ftp = new Ftp(); // Connect securely using explicit SSL. // Use the third argument to specify additional SSL parameters. ftp.Connect(hostname, 21, null, FtpSecurity.Explicit); // Connection is protected now, we can log in safely. ftp.Login(username, password);
显式保护意味着可以随时保护连接。如果您不知道在连接时是否不需要保护,则可能要使用普通的未加密FTP协议进行连接,然后再保护连接。
Ftp ftp = new Ftp(); // Connect to the server with no protection. ftp.Connect(hostname, 21); // Upgrade connection to SSL. // This method also accepts an argument to specify SSL parameters. ftp.Secure(); // Connection is protected now, we can log in safely. ftp.Login(username, password);
FTP会话的隐式SSL保护
FTPS协议最初是由IANA分配的。连接到该端口后,将立即开始SSL协商,并确保控制连接的安全。所有数据连接也以相同的方式隐式地得到保护。这类似于HTTPS使用的方法。
IETF不赞成使用此方法,不建议使用。Rebex FTP / SSL支持与旧服务器进行互操作,但是强烈建议尽可能使用显式保护。
Ftp ftp = new Ftp(); // Connect securely using implicit SSL. // Use the third argument to specify additional SSL parameters. ftp.Connect(hostname, 990, null, FtpSecurity.Implicit); // Connection is protected now, we can log in safely. ftp.Login(username, password);
您可以从rebex.net/ftp-ssl.net/下载该组件。