ホームページ >Java >&#&チュートリアル >Java は SSL 証明書サーバー名をどのように検証しますか?また、トラブルシューティングの手順は何ですか?

Java は SSL 証明書サーバー名をどのように検証しますか?また、トラブルシューティングの手順は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-11 07:39:10559ブラウズ

How Does Java Verify SSL Certificate Server Names and What Are the Troubleshooting Steps?

SSL 証明書サーバー名の解決

SSL 証明書は安全な接続を確立する上で重要な役割を果たしますが、サーバー名がどのように解決されるかを理解することが不可欠です。

SSL 証明書サーバー名の仕組み解決済み

RFC 6125 によると、SSL 証明書のホスト名を検証するプロセスには次のフィールドのチェックが含まれます:

  1. サブジェクト代替名 (SAN): 存在する場合、SAN フィールドが優先され、有効なサーバーが含まれます。 names.
  2. Common Name (CN): SAN フィールドが使用できない場合は、CN フィールドが使用されます。ただし、この方法は非推奨です。

Java のホスト名検証

Java では、SSL 証明書のホスト名検証は通常、RFC 2818 で概説されているガイドラインに従います。それ:

  • 証明書に SAN フィールドが含まれる場合、Javaホスト名が指定された値と照合して検証されます。
  • SAN フィールドが存在しない場合、Java は有効なホスト名について CN フィールドをチェックします。

Keytool を使用して代替を追加する名前

  • Java 7 以降では、keytool にサブジェクトを指定するオプションが提供されます。 SSL 証明書を生成するときの代替名 (SAN)。 san=dns: で -ext パラメータを使用するまたは san=ip:

代替としての OpenSSL

  • keytool がニーズを満たさない場合は、OpenSSL を使用できます。 SAN を使用して自己署名証明書を生成します。 openssl.cnf 構成ファイルを変更するか、環境変数を設定することにより、証明書に含める代替名を指定できます。

ホスト名検証エラーのトラブルシューティング

トラストストアに追加されているにもかかわらず、Java が SSL 証明書を信頼していない場合は、次の手順を実行できます。 help:

  • 証明書の SAN フィールドまたは CN フィールドが、接続しようとしているサーバーのホスト名と一致していることを確認します。
  • 認証局 (CA) が発行された証明書は Java によって信頼されています。
  • Java のデフォルトのホスト名検証をオーバーライドするには、カスタム HostnameVerifier の使用を検討してください。動作。

以上がJava は SSL 証明書サーバー名をどのように検証しますか?また、トラブルシューティングの手順は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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