ホームページ >Java >&#&チュートリアル >Java 1.7 にアップグレードした後、「SSLProtocolException: handshakealert: unrecognized_name」エラーが発生するのはなぜですか?

Java 1.7 にアップグレードした後、「SSLProtocolException: handshakealert: unrecognized_name」エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-04 07:01:151007ブラウズ

Why Am I Getting an

SSL ハンドシェイク アラート: Java 1.7 アップグレード後の Unrecognized_Name エラー

問題の説明:

後Java 1.7 にアップグレードすると、次のような問題が発生する可能性があります。 Web サーバーへの SSL 接続を確立するときに「SSLProtocolException: ハンドシェイク アラート: unrecognized_name」エラーが発生する。この問題は通常、自己署名されたサーバー証明書または誤って構成されたサーバー証明書にアクセスしようとしたときに発生します。

原因:

Java 1.7 では、デフォルトで Server Name Indication (SNI) のサポートが導入されています。ほとんどの Web サーバーは SNI を効果的に管理しますが、構成が間違っている特定のサーバーは SSL ハンドシェイクで「認識されない名前」アラートを返す場合があります。このアラートは、Java を除くほとんどのクライアントによって無視されます。

解決策:

この問題を解決するには、次のいずれかを採用できます。回避策:

コマンド ライン経由で SNI を無効にする:

次のコマンド ライン オプションを使用してアプリケーションを実行します:

java -Djsse.enableSNIExtension=false yourClass

これにより、グローバルに無効になります。アプリケーション全体の SNI。

Java で SNI を無効にするコード:

または、SSL アクションの前に「jsse.enableSNIExtension」プロパティを設定することで、プログラムで SNI を無効にすることもできます:

System.setProperty("jsse.enableSNIExtension", "false");

Unrecognized_Name アラートの処理:

応援したい方はまだ SNI を使用しているときにサーバーの構成が間違っています:

  1. 目的のホスト名で SSLSocket を作成します。
  2. ハンドシェイク (sslsock.startHandshake()) の開始を試みます。
  3. unrecogized_name エラーが発生した場合は、ホストなしで新しい SSLSocket を作成して SNI を無効にします。 name.

重要な注意事項:

SNI を無効にすると、セキュリティのベスト プラクティスが損なわれる可能性があります。可能であれば、この問題を回避するには、SNI を正しくサポートするようにサーバーを構成してください。

以上がJava 1.7 にアップグレードした後、「SSLProtocolException: handshakealert: unrecognized_name」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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