Anypoint Studio を使用した FTPS Connector 2.0 の設定 - Mule 4

Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。

Studio でコネクタを追加および設定する手順は、次のとおりです。

「アプリケーションログの表示」​で説明されているように、コネクタを実行するときに、リアルタイムでアプリケーションログを表示して問題を確認できます。

Studio で初めてコネクタを設定する場合は、​「Studio を使用したコネクタの設定」​を参照してください。このトピックを参照した後、コネクタ項目についての詳細情報が必要な場合は、​「FTPS Connector リファレンス」​を参照してください。

Mule プロジェクトを作成する

Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。

  1. Studio で、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ を選択します。

  2. Mule プロジェクトの名前を入力して、​[Finish (完了)]​ をクリックします。

コネクタを Mule プロジェクトに追加する

FTPS Connector を Mule プロジェクトに追加して、XML コードにコネクタの名前空間およびスキーマの場所を自動的に入力し、プロジェクトの ​pom.xml​ ファイルに必須の連動関係を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  2. [Add Dependencies to Project (連動関係をプロジェクトに追加)]​ ウィンドウで、検索項目に「​ftps​」と入力します。

  3. [Available modules (使用可能なモジュール)]​ で ​[FTPS Connector]​ をクリックします。

  4. [Add (追加)]​ をクリックします。

  5. [Finish (完了)]​ をクリックします。

Studio でコネクタを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのコネクタを使用できません。

ソースの設定

ソースは、指定された条件が満たされたときにフローを開始します。 次の入力元のいずれかを設定して、FTPS Connector で使用できます。

  • On New or Updated File
    ディレクトリをポーリングして、作成または更新されたファイルがないかどうかを確認してフローを開始し、見つかった各ファイルのメッセージを生成します。

  • HTTP Listener
    設定されたホストとポートで要求を受信するたびにフローを開始します。

  • Scheduler
    時間ベースの条件が満たされたときにフローを開始します。

たとえば、On New or Updated File ソースを設定する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[On New or Updated File]​ を選択します。

  2. [On New or Updated File]​ 操作を Studio キャンバスにドラッグします。

  3. [On New or Updated File]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

  4. [Path (パス)]​ 項目の値を指定します。

  5. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックして、アプリケーション内の ​On New or Updated File​ のすべてのインスタンスで使用できるグローバル要素を設定します。

  6. [General (一般)]​ タブで、コネクタの接続情報を指定します。

  7. [Host (ホスト)]​ 設定して、FTPS サーバーホスト (​localhost​ や ​192.168.0.1​ など) を指定します。

  8. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

  9. [OK]​ をクリックします。

  10. [On New or Updated File]​ 設定画面で、​[Scheduling Strategy (スケジュール戦略)]​ 値を指定し、必要に応じてその他の項目を入力します。

フローにコネクタの操作を追加する

フローにコネクタの操作を追加すると、そのコネクタで実行する特定の操作をすぐに定義できます。

FTPS Connector の操作を追加するには、次の手順に従います。

  1. [Mule Palette (Mule パレット)]​ ビューで ​[FTPS]​ を選択し、目的の操作を選択します。

  2. その操作を Studio キャンバスのソースの右にドラッグします。

Mule パレットでの FTP Connector の操作

コネクタのグローバル要素を設定する

コネクタを設定する場合、アプリケーション内のそのコネクタのすべてのインスタンスで使用できるグローバル要素を設定することをお勧めします。グローバル要素を設定するには、FTP サーバー接続を設定する必要があります。

FTPS Connector のグローバル要素を設定する手順は、次のとおりです。

  1. Studio キャンバスでコネクタの名前を選択します。

  2. Studio キャンバスで操作を選択します。

  3. 操作の設定画面で、​[Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックし、グローバル要素設定項目にアクセスします。

  4. [General (一般)]​ タブで、コネクタの接続情報を指定します。

  5. [Working Directory (作業ディレクトリ)]​ をこのコネクタで使用するすべての相対パスのルートとして設定します。
    指定しない場合、デフォルト値はリモートサーバーになります。

  6. [Host (ホスト)]​ 設定して、FTPS サーバーホスト (​localhost​ や ​0.0.0.0​ など) を指定します。

  7. [Username (ユーザー名)]​ と ​[Password (パスワード)]​ を設定します。

  8. [Required Libraries (必須のライブラリ)]​ 項目で Bouncy Castle ライブラリを設定します。

  9. [Advanced (詳細)]​ タブで、必要に応じてタイムアウト設定と再接続戦略を指定します。

  10. [TLS]​ タブで、TLS 設定を指定します。

  11. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

  12. [OK]​ をクリックします。

FTPS Connector の [Global Element Configuration (グローバル要素設定)]

[Configuration XML (設定 XML)]​ エディターでは、​ftps:config​ の設定は次のように記述されます。

<ftps:config name="FTPS_Config">
  <ftps:connection username="anonymous" password="password"
   host="0.0.0.0" port="21" workingDir="${workingDir}">
    <tls:context>
        <tls:trust-store path="path/to/keystore" password="mulepassword" />
    </tls:context>
  </ftps:connection>
</ftps:config>
xml

FTPS Connector の FTPS モードの設定

グローバル要素設定で、​[Ftps mode (FTPS モード)]​ 項目を次のいずれかのオプションに設定できます。

  • Ftps explicit mode (Default) (FTPS 明示的モード (デフォルト))​ 明示的モードでは FTP サーバーへの接続が保護されません。クライアントはコマンドまたはデータチャネルとして TLS をネゴシエートできます。

  • Ftps implicit mode (FTPS 暗黙的モード)​ 暗黙的モードでは、SSL/TLS ハンドシェイクを介した安全な接続を FTP コマンドが送信される前に確立する必要があることを前提にしています。これにより、全 FTP セッションが暗号化されます。

[Ftps explicit mode (Default) (FTPS 明示的モード (デフォルト))]​ を設定する場合、​[PROT Settings (PROT 設定)]​ 項目を使用してデータチャネル保護レベルを次のいずれかのオプションに設定することもできます。

  • CLEAR (クリア)​ CLEAR (クリア) 保護レベルは、データチャネルで伝送されるのがファイル転送の未加工データであり、セキュリティが適用されないことを示します。これがデフォルト値です。

  • PRIVATE (プライベート)​ PRIVATE (プライベート) 保護レベルは、データの整合性および機密性が保護されることを示します。

Studio での FTPS Connector 明示的モード設定

[Configuration XML (設定 XML)]​ エディターで、​ftps=mode​、​ftps-explicit-mode​、および ​protSetting​ の設定は次のように記述されます。

 <ftps:config name="FTPS_Config">
   <ftps:connection username="anonymous" password="password"
    host="0.0.0.0" port="21" workingDir="${workingDir}">
     <tls:context>
         <tls:trust-store path="path/to/keystore" password="mulepassword" />
     </tls:context>
     <ftps:ftps-mode >
         <ftps:ftps-explicit-mode protSetting="PRIVATE" />
     </ftps:ftps-mode>
   </ftps:connection>
 </ftps:config>
xml
Studio での FTPS Connector 暗黙的モード設定

[Configuration XML (設定 XML)]​ エディターで、​ftps=mode​ および ​ftps-implicit-mode​ の設定は次のように記述されます。

<ftps:config name="FTPS_Config">
  <ftps:connection username="anonymous" password="password"
   host="0.0.0.0" port="21" workingDir="${workingDir}">
    <tls:context>
        <tls:trust-store path="path/to/keystore" password="mulepassword" />
    </tls:context>
    <ftps:ftps-mode >
        <ftps:ftps-implicit-mode />
    </ftps:ftps-mode>
  </ftps:connection>
</ftps:config>
xml

キーストアとトラストストアを使用した TLS の設定

キーストアを証明書と共に提供することで、Transport Layer Security (TLS) を使用して FTPS を設定できます。トラストストアを指定することで双方向認証を有効にすることもできます。TLS 設定についての詳細は、​「キーストアとトラストストアを使用した TLS の設定」Leaving the Site​ドキュメントを参照してください。

セッション再利用のための Java JDK の設定

FTPS を使用するセッションを再利用するには、互換性のために Extended Main Secret 拡張機能 (JDK-8192045) (デフォルトでは ​true​ に設定されている) を無効にする必要があります。この拡張機能では、異なるグループのクライアントとサーバーで同じセッションを使用することでユーザーを脆弱性から保護しますが、これは制御とデータ接続に同じセッションを使用する需要と矛盾しています。Extended Main Secret 拡張機能をアクティブ化すると、セッションの再利用は、HTTPS と LDAP に対してのみ実装されているエンドポイント検証でのみ可能になります。

Anypoint Studio で作業しているときに拡張機能を無効にするには、次の手順を実行します。

  1. Studio で ​[Run (実行)] > [Run Configurations…​ (設定を実行…​)]​ をクリックします。

  2. [Run Configurations (設定を実行)]​ 画面で、​[(x)=Arguments ((x)=引数)]​ タブをクリックします。

  3. [VM arguments (VM 引数)]​ ボックスで、次の引数を JVM 実行に追加します。

    -M-Djdk.tls.useExtendedMasterSecret=false

[Run Configurations (設定を実行)] ウィンドウの Extended Main Secret を無効にするための JVM 引数
  1. [Apply (適用)]​ をクリックします。

  2. [Run (実行)]​ をクリックします。

スタンドアロン Mule 環境で作業しているときに Extended Main Secret 拡張機能を無効にするには、次の引数を JVM 実行に追加します。

./bin/mule -Djdk.tls.useExtendedMasterSecret=false

Bouncy Castle ライブラリとセキュリティプロバイダーの設定

このコネクタは、コマンドチャネルからデータチャネルへの SSL セッションを再利用するためにリフレクションに依存しなくなりました。代わりに、外部から提供された Bouncy Castle ライブラリを使用したクライアントとホスト間の SSL セッション再開がサポートされるようになりました。MITM 攻撃を防ぐには、Bouncy Castle ライブラリを追加する必要があります。

FTPS Connector を使用してセッションを再利用するには、コネクタのグローバル要素を設定するときに、​[Required Libraries (必須のライブラリ)]​ 項目で Bouncy Castle ライブラリを設定する必要があります。3 つの選択可能なオプションから 1 つを選択できます。

Bouncy Castle ライブラリを追加する方法のオプションが表示されているグローバル要素のプロパティウィンドウ

これらのライブラリを ​JAVA_VM_FOLDER/jre/lib/ext​ フォルダーに追加して、Bouncy Castle セキュリティプロバイダーをセットアップすることもできます。

  1. AnypointStudio.ini​ ファイルを開き、Java VM が保存されている場所 (​/Applications/AnypointStudio.app/Contents/Eclipse/plugins/org.mule.tooling.jdk.v8.macosx.x86_64_1.3.3/Contents/Home/jre/lib/ext​ など) を特定します。Java VM へのパスは、​-vm​ コマンドでセットアップします。次の手順では、Java VM が保存されているパスが ​JAVA_VM_FOLDER​ であると想定しています。

  2. https://www.bouncycastle.org/download/bouncy-castle-java/ から、​bcprov-jdk18on.jar​、​bctls-jdk18on.jar​、​bcpkix-jdk18on.jar​、​bcutil-jdk18on.jar​ ファイルをダウンロードします。

  3. ダウンロードしたファイルを ​JAVA_VM_FOLDER/jre/lib/ext​ フォルダーにコピーします。

  4. JAVA_VM_FOLDER/jre/lib/security/java.security​ ファイルを開きます。

  5. 次のセクションに示すように、ファイルの先頭で Bouncy Castle セキュリティプロバイダーを設定します。

    security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider security.provider.3=sun.security.provider.Sun security.provider.4=sun.security.rsa.SunRsaSign security.provider.5=sun.security.ec.SunEC security.provider.6=com.sun.net.ssl.internal.ssl.Provider security.provider.7=com.sun.crypto.provider.SunJCE security.provider.8=sun.security.jgss.SunProvider security.provider.9=com.sun.security.sasl.Provider security.provider.10=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.11=sun.security.smartcardio.SunPCSC security.provider.12=apple.security.AppleProvider

  1. [Apply (適用)]​ をクリックします。

  2. [Run (実行)]​ をクリックします。

アプリケーションログの表示

問題を確認するため、アプリケーションログを次の方法で表示できます。

  • アプリケーションを Anypoint Platform から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。

  • コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。

アプリケーションのログファイル (​log4j2.xml​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​MULE_HOME/logs/<app-name>.log​ でアプリケーションログを表示することもできます。