Java で FTPS サーバーに接続する
File Transfer Protocol Secure (FTPS) は File Transfer Protocol (FTP) のセキュア バージョンであり、SSL/TLS 暗号化を使用して、クライアントとサーバー間で転送されるデータを保護します。 この記事では、Java Secure Channel (JSSE) API を使用して Java で FTPS サーバーに接続する方法について説明します。
FTP と FTPS
FTP は、コンピュータ間でファイルを転送するために古くから広く使用されているプロトコルです。 いまだに広く使用されていますが、セキュリティ上の問題がいくつかあるため、多くのアプリケーションには適していません。
主な問題の 1つは暗号化の欠如です。これにより、盗聴者がパスワードや転送中のデータなどの機密情報を傍受して読み取ることが可能になります。
FTPS は、暗号化された接続と強化されたセキュリティを提供する FTP の拡張機能です。 FTPS には、明示的 FTPS と暗黙的 FTPS の 2 種類があります。
明示的な FTPS では、クライアントは安全な接続を要求しますが、暗黙的な FTPS では、サーバーは安全な接続を要求し、クライアントは従う必要があります。 この記事では、明示的な FTPS に焦点を当てます。
Java で FTPS サーバーに接続する
このチュートリアルに従うには、コンピューターに次のものがインストールされている必要があります。
- Java 開発キット (JDK)
- 接続先の FTPS サーバー (FileZilla サーバーなど)
- テキストエディタ
-
FTPS サーバーのセットアップ
最初のステップは、FTPS サーバーをセットアップすることです。 FileZilla Server など、明示的な FTPS をサポートする任意の FTPS サーバーを使用できます。
FileZilla サーバーをセットアップするには、次の手順に従います。
- 公式 Web サイトから FileZilla Server をダウンロードしてインストールします。
- FileZilla サーバー インターフェイスを起動します。
編集
>設定
をクリックします。- FTP の
設定
タブに移動し、"FTP over SSL/TLS"
オプションをチェックします。 SSL/TLS 設定
セクションで、安全な FTP (FTPS) 接続のみを許可する
オプションを選択します。OK
をクリックして変更を保存します。File
>Start Server
をクリックしてサーバーを起動します。
-
Java コードの作成
FTPS サーバーをセットアップしたので、それに接続するための Java コードを記述できます。 Java Secure Channel (JSSE) API を使用して、FTPS サーバーへの安全な接続を作成します。
FTPS サーバーに接続するコードは次のとおりです。
import java.io.IOException; import java.security.NoSuchAlgorithmException; import org.apache.commons.net.ftp.FTPSClient; public class FTPSExample { public static void main(String[] args) throws NoSuchAlgorithmException, IOException { FTPSClient ftpsClient = new FTPSClient(); ftpsClient.connect("ftpserver.com", 21); ftpsClient.login("username", "password"); ftpsClient.execPROT("P"); ftpsClient.execPBSZ(0); ftpsClient.disconnect(); } }
コードを分解して、各部分が何をするか見てみましょう。
FTPSClient
クラスは Apache Commons Net ライブラリの一部であり、SSL/TLS を使用した安全な接続をサポートする FTP プロトコルを実装します。connect
メソッドは FTPS サーバーに接続します。 サーバーのホスト名、IP アドレス、およびポート番号 (通常は 21) を引数として取ります。login
メソッドは、指定されたユーザー名とパスワードを使用して FTPS サーバーにログインするために使用されます。execPROT
メソッドは安全な接続を要求します。 引数"P"
は、プライベート (暗号化された) 接続を使用することを示します。execPBSZ
メソッドは、保護バッファ サイズを設定します。 値 0 は、保護バッファーを無効にします。- 最後に、
disconnect
メソッドを使用して FTPS サーバーへの接続を閉じます。
-
コードの実行
コードを実行するには、
classpath
に Apache Commons Net ライブラリが必要です。 ライブラリは、Apache Commons Net Web サイトからダウンロードできます。次のコマンドを使用してコードをコンパイルします。
javac FTPSExample.java
次に、次のコマンドを使用してコードを実行します。
java FTPSExample
すべてが正しく設定されている場合、出力は表示されません。これは、FTPS サーバーへの接続が成功したことを意味します。
注: コードを実行するには FTPS 接続をセットアップする必要があるため、このコードはオンライン コンパイラでは実行されません。
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook