SSL 証明書サーバー名の解決
SSL 証明書は安全な接続を確立する上で重要な役割を果たしますが、サーバー名がどのように解決されるかを理解することが不可欠です。
SSL 証明書サーバー名の仕組み解決済み
RFC 6125 によると、SSL 証明書のホスト名を検証するプロセスには次のフィールドのチェックが含まれます:
-
サブジェクト代替名 (SAN): 存在する場合、SAN フィールドが優先され、有効なサーバーが含まれます。 names.
-
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 サイトの他の関連記事を参照してください。