29

暗黙的および明示的なFTPS(FTPESとも呼ばれます)をサポートするように求められています。現在、.NETを使用していますFtpWebRequestFtpWebRequest両方のタイプのFTPESをサポートしていますか?違いは何ですか?

ありがとう

4

6 に答える 6

17

私の知る限り、現在の (.NET 2.0 および 3.5) バージョンの FtpWebRequest は明示的 SSL のみをサポートしています。

実際、.NET 2.0 は現在、暗黙的な SSL をサポートしておらず、明示的な SSL のみをサポートしています。今後のリリースでこれを追加することを検討します。

JonCole - MSDN フォーラム投稿の MSFTModerator

暗黙的および明示的な TLS/SSL の両方を使用する必要がある場合は、サードパーティの FTP/SSL コンポーネントのいずれかを試す必要があります。次のコードはRebex FTP/SSLを使用しており、チュートリアル ページから取得されています。

明示的な TLS/SSL

クライアントは通常の保護されていない方法で FTP サーバーに接続します。通常は、FTP プロトコルに割り当てられたポート 21 に接続します。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/ からダウンロードできます。

于 2009-12-08T20:02:04.277 に答える
14

以前に Alex FTPS Client を使用しました。http://ftps.codeplex.com/に目を向けるべきかもしれません。

于 2010-02-20T08:05:50.560 に答える
1

Ftp.dll FTP/FTPS クライアントを試すこともできます。

暗黙的および明示的なSSL 接続をサポートします。暗黙のサンプルは次のとおりです。

using(Ftp ftp = new Ftp())
{
    ftp.ConnectSSL("ftp.server.com");

    ftp.Login("user", "password");

    ftp.ChangeFolder("uploads");
    ftp.UploadFile("report.txt", @"c:\report.txt");

    ftp.Close();
}

これは商用製品であり、私はこのコンポーネントの作成者であることに注意してください。

于 2010-11-27T01:00:28.633 に答える