SSL 証明書サーバー名の解決
SSL 証明書では、サーバー名は主にサブジェクト代替名 (SAN) フィールドに基づいて解決されます。ほとんどの場合、ブラウザは SAN を使用して、接続先の Web サイトの ID を確認します。ただし、Java ベースのアプリケーションは動作が異なるようで、サーバー名の検証を SAN のみに依存しています。
なぜ区別されるのでしょうか?
RFC 2818 では、ブラウザが次のことを実行できると定義されています。サーバー名の検証には共通名 (CN) フィールドまたは SAN フィールドを使用します。その後、RFC 6125 では CN の使用が非推奨となり、SAN の排他的使用が推奨されました。 Java アプリケーションは一般に RFC 6125 に準拠していますが、一部のブラウザでは互換性の理由から CN を受け入れる場合があります。
Keytool を使用した代替名の追加
Keytool を使用すると、SSL に SAN を追加できます。 「-ext」オプションを使用した証明書。次のコマンドを使用して代替名を追加できます:
-ext san=dns:www.example.com -ext san=ip:10.0.0.1
代わりに OpenSSL を使用できますか?
はい、OpenSSL を使用して SSL 証明書を作成することもできます。 SAN。これを行うには、「openssl.cnf」構成ファイルを次のように変更します。
[req] req_extensions = v3_req [ v3_req ] subjectAltName=IP:10.0.0.1 # or subjectAltName=DNS:www.example.com
または、環境変数 OPENSSL_CONF を、変更した「openssl.cnf」ファイルの場所に設定します。
以上がJava アプリケーションとブラウザでは、SSL サーバー名解決がどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。