Java で FTPS サーバーに接続する

Muhammad Adil 2023年10月12日
  1. FTP と FTPS
  2. Java で FTPS サーバーに接続する
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 サーバーに接続する

このチュートリアルに従うには、コンピューターに次のものがインストールされている必要があります。

  1. Java 開発キット (JDK)
  2. 接続先の FTPS サーバー (FileZilla サーバーなど)
  3. テキストエディタ
  • FTPS サーバーのセットアップ

    最初のステップは、FTPS サーバーをセットアップすることです。 FileZilla Server など、明示的な FTPS をサポートする任意の FTPS サーバーを使用できます。

    FileZilla サーバーをセットアップするには、次の手順に従います。

    1. 公式 Web サイトから FileZilla Server をダウンロードしてインストールします。
    2. FileZilla サーバー インターフェイスを起動します。
    3. 編集 > 設定をクリックします。
    4. FTP の設定タブに移動し、"FTP over SSL/TLS"オプションをチェックします。
    5. SSL/TLS 設定セクションで、安全な FTP (FTPS) 接続のみを許可するオプションを選択します。
    6. OK をクリックして変更を保存します。
    7. 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();
      }
    }
    

    コードを分解して、各部分が何をするか見てみましょう。

    1. FTPSClient クラスは Apache Commons Net ライブラリの一部であり、SSL/TLS を使用した安全な接続をサポートする FTP プロトコルを実装します。
    2. connect メソッドは FTPS サーバーに接続します。 サーバーのホスト名、IP アドレス、およびポート番号 (通常は 21) を引数として取ります。
    3. login メソッドは、指定されたユーザー名とパスワードを使用して FTPS サーバーにログインするために使用されます。
    4. execPROT メソッドは安全な接続を要求します。 引数 "P" は、プライベート (暗号化された) 接続を使用することを示します。
    5. execPBSZ メソッドは、保護バッファ サイズを設定します。 値 0 は、保護バッファーを無効にします。
    6. 最後に、disconnect メソッドを使用して FTPS サーバーへの接続を閉じます。
  • コードの実行

    コードを実行するには、classpath に Apache Commons Net ライブラリが必要です。 ライブラリは、Apache Commons Net Web サイトからダウンロードできます。

    次のコマンドを使用してコードをコンパイルします。

    javac FTPSExample.java
    

    次に、次のコマンドを使用してコードを実行します。

    java FTPSExample
    

    すべてが正しく設定されている場合、出力は表示されません。これは、FTPS サーバーへの接続が成功したことを意味します。

    注: コードを実行するには FTPS 接続をセットアップする必要があるため、このコードはオンライン コンパイラでは実行されません。

著者: Muhammad Adil
Muhammad Adil avatar Muhammad Adil avatar

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