クラスSNIHostName
host_nameタイプのサーバー名を表します。
TLS拡張(RFC 6066)のセクション3「Server Name Indication」で説明されているように、「HostName」には、クライアントが理解できるサーバーの完全修飾DNSホスト名が含まれます。 ホスト名のエンコードされたサーバー名の値は、ASCIIエンコーディングを使用したドットで終わらないバイト文字列として表現されます。 これにより、RFC 5890で規定されたA-label(Internationalized Domain Names for Applications (IDNA)の有効な文字列のASCII互換エンコーディング(ACE)形式)の使用による国際化ドメイン名(IDN)のサポートが可能となります。
SNIHostNameオブジェクトは不変です。
- 導入されたバージョン:
- 1.8
- 外部仕様
- 関連項目:
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明SNIHostName(byte[] encoded) 指定されたエンコード値を使用してSNIHostNameを作成します。SNIHostName(String hostname) 指定されたホスト名を使用してSNIHostNameを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明static SNIMatchercreateSNIMatcher(String regex) SNIHostNameのSNIMatcherオブジェクトを作成します。booleanこのサーバー名を指定されたオブジェクトと比較します。このSNIHostNameオブジェクトのStandardCharsets.US_ASCII準拠のホスト名を返します。inthashCode()このSNIHostNameのハッシュ・コード値を返します。toString()このオブジェクトの文字列表現(このSNIHostNameオブジェクトのDNSホスト名を含む)を返します。クラスjavax.net.ssl.SNIServerNameで宣言されたメソッド
getEncoded, getType
-
コンストラクタの詳細
-
SNIHostName
public SNIHostName(String hostname) 指定されたホスト名を使用してSNIHostNameを作成します。RFC 6066により、ホスト名のエンコードされたサーバー名の値は
StandardCharsets.US_ASCIIに準拠します。 このメソッドでは、hostnameにユーザー・フレンドリな国際化ドメイン名(IDN)を指定できます。 ホスト名のASCII文字に関する制限(RFC 3490、RFC 1122、RFC 1123を参照)を強制的に適用し、hostnameをASCII互換エンコーディング(ACE)に変換するには、次のようにIDN.toASCII(String, int)が使用されます。IDN.toASCII(hostname, IDN.USE_STD3_ASCII_RULES);hostname引数が不正になるのは次の場合です。-
hostnameが空である。 -
hostnameがドットで終わっている。 -
hostnameが、RFC 3490仕様に準拠した有効な国際化ドメイン名(IDN)でない。
- パラメータ:
hostname- このサーバー名のホスト名- スロー:
NullPointerException-hostnameがnullの場合IllegalArgumentException-hostnameが不正である場合- 外部仕様
-
-
SNIHostName
public SNIHostName(byte[] encoded) 指定されたエンコード値を使用してSNIHostNameを作成します。このメソッドは通常、要求されたSNI拡張のエンコードされた名前の値を解析するために使用されます。
RFC 6066により、ホスト名のエンコードされた名前の値は
StandardCharsets.US_ASCIIに準拠します。 ただし、SNI拡張の以前のバージョン(RFC 4366)では、エンコードされたホスト名はUTF-8エンコーディングを使用したバイト文字列として表現されます。 このメソッドではバージョンの許容範囲を拡げるため、encoded引数の文字セットとして、StandardCharsets.US_ASCIIだけでなくStandardCharsets.UTF_8も使用できるようになっています。encoded引数をASCII互換エンコーディング(ACE)のホスト名に変換するには、IDN.toASCII(String)が使用されます。このコンストラクタを使用するのは、要求されたSNI拡張のエンコードされた名前の値を解析する場合のみにすることを強くお薦めします。 それ以外の場合は、RFC 6066に準拠するために、
encoded引数で常にStandardCharsets.US_ASCII準拠の文字セットを使用し、ホスト名のASCII文字に関する制限(RFC 3490、RFC 1122、RFC 1123を参照)を強制的に適用するか、かわりにSNIHostName(String)を使用してください。encoded引数が不正になるのは次の場合です。-
encodedが空である。 -
encodedがドットで終わっている。 -
encodedがStandardCharsets.US_ASCIIまたはStandardCharsets.UTF_8に準拠した文字セットでエンコードされていない。 -
encodedが、RFC 3490仕様に準拠した有効な国際化ドメイン名(IDN)でない。
以降の変更から保護するために、
encodedバイト配列のクローンが作成されます。- パラメータ:
encoded- このサーバー名のエンコードされたホスト名- スロー:
NullPointerException-encodedがnullの場合IllegalArgumentException-encodedが不正である場合- 外部仕様
-
-
-
メソッドの詳細
-
getAsciiName
public String getAsciiName()このSNIHostNameオブジェクトのStandardCharsets.US_ASCII準拠のホスト名を返します。RFC 6066によれば、返されるホスト名は、A-labelを含む国際化ドメイン名である可能性があります。 A-labelの仕様の詳細は、RFC 5890を参照してください。
- 戻り値:
- この
SNIHostNameオブジェクトのStandardCharsets.US_ASCII準拠のホスト名 - 外部仕様
-
equals
public boolean equals(Object other) このサーバー名を指定されたオブジェクトと比較します。RFC 6066によれば、DNSホスト名では大文字と小文字は区別されません。 2つのサーバー・ホスト名が等しくなるのは、両者の名前タイプが同じであり、かつ大文字と小文字を区別せずに比較してホスト名が等しくなる場合のみです。
- オーバーライド:
equals、クラスSNIServerName- パラメータ:
other- 比較する他のサーバー名オブジェクト。- 戻り値:
otherがこのインスタンスと等しいとみなされた場合にのみtrue- 外部仕様
- 関連項目:
-
hashCode
public int hashCode()このSNIHostNameのハッシュ・コード値を返します。ハッシュ・コード値は、この
SNIHostNameのホスト名(大文字と小文字を区別しない)を使用して生成されます。- オーバーライド:
hashCode、クラスSNIServerName- 戻り値:
- この
SNIHostNameのハッシュ・コード値。 - 関連項目:
-
toString
public String toString()このオブジェクトの文字列表現(このSNIHostNameオブジェクトのDNSホスト名を含む)を返します。この表現の厳密な詳細は未指定であり変更される可能性がありますが、典型的な表現は次のようになります。
"type=host_name (0), value=<hostname>""<hostname>"は、Aラベルを含むホスト名のASCII表現です。 たとえば、擬似ホスト名の戻り値は次のようになります:"type=host_name (0), value=www.example.com"or"type=host_name (0), value=xn--fsqu00a.xn--0zwm56d"この表現の厳密な詳細は未指定であり、変更される可能性があります。
- オーバーライド:
toString、クラスSNIServerName- 戻り値:
- このオブジェクトの文字列表現
-
createSNIMatcher
public static SNIMatcher createSNIMatcher(String regex) SNIHostNameのSNIMatcherオブジェクトを作成します。サーバーはこのメソッドを使用することで、受入れ可能な
SNIHostNameを検証できます。 たとえば、SNIMatcher matcher = SNIHostName.createSNIMatcher("www\\.example\\.com");この場合、ホスト名「www.example.com」が受け入れられます。SNIMatcher matcher = SNIHostName.createSNIMatcher("www\\.example\\.(com|org)");この場合、ホスト名「www.example.com」と「www.example.org」が受け入れられます。- パラメータ:
regex- 一致させるthehostname(s)を表す「正規表現パターン」- 戻り値:
SNIHostNameのSNIMatcherオブジェクト- スロー:
NullPointerException-regexがnullである場合PatternSyntaxException- 正規表現の構文が無効な場合
-