ホームページ  >  記事  >  Java  >  TLS セッションの再利用で FTPS サーバーに接続するときに発生する「ハンドシェイク中にリモート ホストが接続を閉じました」エラーを解決するにはどうすればよいですか?

TLS セッションの再利用で FTPS サーバーに接続するときに発生する「ハンドシェイク中にリモート ホストが接続を閉じました」エラーを解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 17:23:021004ブラウズ

How Can I Resolve the

TLS セッション再利用による FTPS サーバーへの接続

FTPS サーバーとの接続を確立しようとすると、クライアントは「リモートハンドシェイク中にホストが接続を閉じました」というエラーが発生しました。これは通常、サーバーが制御接続とデータ接続の両方に同じ TLS セッションを使用する必要がある場合に発生します。 Apache Commons Net の FTPS 実装は、本質的にこの動作をサポートしていません。

この問題を解決し、TLS セッションを確実に再利用するには:

  1. カスタム FTPSClient を実装します:

    • オーバーライドFTPSClient クラスの prepareDataSocket メソッドを使用して、TLS セッションを再利用します。
    • Cyber​​duck の FTPClient.java にあるものと同様のロジックを実装します。
  2. オーバーライドDefaultFtpsSessionFactory:

    • DefaultFtpsSessionFactory の createClientInstance() メソッドをオーバーライドします。
    • カスタム FTPSClient を返します実装。
  3. JDK 8u161 の処理問題:

    • 「jdk.tls.useExtendedMasterSecret」システム プロパティを false に設定するJDK の互換性の問題に対処するため8u161.
  4. Use SessionsByHostAndPort:

    • 新しい Java バージョンでは、sessionHostPortCache の代わりに SSLSessionContext のsessionsByHostAndPort マップを使用します。セッション
  5. Android SDK 制限のバイパス (オプション):

    • Android で作業している場合は、SDK 制限をバイパスしてアクセスしますによるフィールド

この解決策は回避策であり、長期的な修正にはならない可能性があることに注意してください。

以上がTLS セッションの再利用で FTPS サーバーに接続するときに発生する「ハンドシェイク中にリモート ホストが接続を閉じました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。