ホームページ >Java >&#&チュートリアル >Java は SSL 証明書内のサーバー名をどのように解決しますか?

Java は SSL 証明書内のサーバー名をどのように解決しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-11 20:44:19232ブラウズ

How Does Java Resolve Server Names in SSL Certificates?

SSL 証明書サーバーの名前解決について

安全な Web 通信の領域では、SSL 証明書はサーバーの ID を検証する上で重要な役割を果たします。 。サーバー名解決プロセスは、HTTPS 接続の信頼を確立するために SSL 証明書で指定された名前がどのように使用されるかを決定します。

SSL 証明書サーバー名はどのように解決されますか?

RFC 2818 およびその後継となる RFC 6125 では、サーバー名検証のガイドラインが定義されています。これらの標準では、次のことが指定されています。

  • 証明書に「dNSName」タイプの「subjectAltName」拡張子が含まれている場合、それを ID として使用する必要があります。
  • それ以外の場合は、共通名 (証明書の「件名」セクションの CN) フィールドが使用されます。

Java のSSL 証明書検証メカニズム

Java の SSL メカニズムは subjectAltName 拡張子の優先順位に従います。証明書にこの拡張子が含まれている場合、Java は指定されたドメイン名または IP アドレスを検証用の ID として使用します。それ以外の場合は、CN フィールドの使用に戻ります。この動作は、RFC 2818 で概説されている推奨ベスト プラクティスに従っています。

Keytool を使用した代替名の追加

はい、SSL に代替名を追加することができます。 keytool を使用して証明書を作成します。 Java 7 以降、keytool に「-ext」オプションが導入されました。これにより、証明書にサブジェクト代替名 (SAN) を含めることができます。要件に基づいて、SAN を「dns:www.example.com」または「ip:10.0.0.1」として指定できます。

代替としての OpenSSL

keytool の使用に慣れていない場合は、SAN で SSL 証明書を生成するための OpenSSL が優れたオプションです。 openssl.cnf 構成ファイルを変更すると、「[req]」セクションと「[ v3_req ]」セクションを使用して subjectAltName 拡張子を指定できます。さらに、OPENSSL_CONF 環境変数を使用して、構成ファイルの明示的な場所を指定できます。

問題を解決するには、証明書に正しいサーバー名が含まれていることを確認する必要があります。 CN フィールドに IP アドレスのみが含まれている場合、ブラウザはそれらを受け入れる可能性がありますが、SAN がないため Java はそれらを信頼しません。 keytool または OpenSSL を使用して証明書に SAN を追加すると、ブラウザと Java の両方がサーバー名を正しく認識できるようになります。

以上がJava は SSL 証明書内のサーバー名をどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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