ホームページ >Java >&#&チュートリアル >Java が SSL ハンドシェイク中にクライアント証明書の送信に失敗するのはなぜですか?

Java が SSL ハンドシェイク中にクライアント証明書の送信に失敗するのはなぜですか?

DDD
DDDオリジナル
2024-12-03 07:56:10914ブラウズ

Why Does Java Fail to Send Client Certificates During SSL Handshakes?

SSL ハンドシェイク中の Java によるクライアント証明書の謎の省略

キーストアとトラストストアの設定が正しく構成されているにもかかわらず、多くの開発者は Java のエラーが原因で SSL ハンドシェイクの失敗に遭遇します。特異な行動。具体的には、Java はハンドシェイク中にクライアント証明書をサーバーに送信できません。

問題の解明:

  1. サーバーのリクエストの誤解: サーバーはクライアント証明書 (RootCA によって署名された) を要求しますが、Java はキーストアのみを検索し、一致する証明書を無視します。 (SubCA によって署名された) がトラストストアに存在します。
  2. KeyManager の過剰な熱意: Java KeyManager は、証明書チェーンを完了している場合でも、他のすべてを無視して、キーストアからクライアント証明書を選択的に取得します。
  3. ハンドシェイク失敗が発生しました: Java該当する証明書が利用できないと誤って判断し、ハンドシェイクを放棄し、イライラする失敗を引き起こします。

考えられる説明:

  • 中間ファイルの不適切なインポートCA 証明書をキーストアに追加し、証明書を中断するチェーン。
  • サーバーの構成ミスにより、提供された RootCA 証明書ではなく SubCA によって署名された証明書が必要です。

一時的な回避策:

この問題に対処するには、クライアント証明書、中間 CA 証明書、および場合によってはルート CA 証明書を含む Bundle.pem ファイルを作成できます。このバンドルは秘密キーを含むキーストア エイリアスにインポートされ、SSL ハンドシェイク中に Java が完全な証明書チェーンを確実に認識できるようにします。

ただし、この回避策は依然として不十分な解決策であり、Java 開発チームから正式に説明されています。将来のバージョンでの解決が強く望まれます。

以上がJava が SSL ハンドシェイク中にクライアント証明書の送信に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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