FTPS を使用して同じ TLS セッションでデータ接続を確立するにはどうすればよいですか?
制御接続とデータ接続の両方で同じ TLS セッションを維持することは、FTPS における重要なセキュリティ対策です。 。一部の FTP サーバーではこの要件が強制され、データ接続が別の TLS セッションを確立しようとすると問題が発生します。
Apache Commons Net では、ホストごとに新しいセッションを想定するデフォルトの構成が原因でこの問題が発生する可能性があります。 /ポートの組み合わせ。これを解決するには、次の対策を検討してください:
-
サーバーのコンプライアンスを確認する: FTPS サーバーが同じ TLS セッション要件を強制していることを確認します。サーバーのドキュメントを確認するか、FileZilla などのクライアントを使用して確認します。
-
Apache Commons Net のカスタマイズ: 「_prepareDataSocket_」メソッドをオーバーライドするカスタム FTPSClient を実装します。 TLS セッションのキャッシュを設定して再利用する方法については、Cyberduck の FTPClient.java コードを参照してください。
-
Spring Integration DefaultFtpsSessionFactory をオーバーライドする: DefaultFtpsSessionFactory のカスタム サブクラスを作成し、「createClientInstance()」をオーバーライドします。 " メソッドを使用して、変更された FTPSClient を返します拡張マスター シークレット拡張機能を無効にするには、次の行をコードに追加します。これにより、互換性の問題が発生する可能性があります。
- System.setProperty("jdk.tls.useExtendedMasterSecret", "false");
sessionsByHostAndPort フィールドを使用します:
新しい Java バージョンの場合、TLS セッション キャッシュにアクセスするには、「sessionHostPortCache」の代わりに「sessionsByHostAndPort」フィールドを使用します。
-
Android での SDK 制限のバイパス: Android デバイスでは、リフレクションを使用してプライベート フィールドにアクセスするには SDK 制限をバイパスする必要がある場合があります。
- これらの対策を実装することで、Apache Commons Net がデータ接続に TLS セッションを再利用できるようになり、互換性が確保されます。それを必要とする FTPS サーバーと接続します。
以上がApache Commons Net を使用して FTPS でのデータ接続に同じ TLS セッションを再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。