public final class SNIHostName extends SNIServerName
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オブジェクトは不変です。
SNIServerName, StandardConstants.SNI_HOST_NAME| コンストラクタと説明 |
|---|
SNIHostName(byte[] encoded)
指定されたエンコード値を使用して
SNIHostNameを作成します。 |
SNIHostName(String hostname)
指定されたホスト名を使用して
SNIHostNameを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
static SNIMatcher |
createSNIMatcher(String regex)
SNIHostNameのSNIMatcherオブジェクトを作成します。 |
boolean |
equals(Object other)
このサーバー名を指定されたオブジェクトと比較します。
|
String |
getAsciiName()
この
SNIHostNameオブジェクトのStandardCharsets.US_ASCII準拠のホスト名を返します。 |
int |
hashCode()
この
SNIHostNameのハッシュ・コード値を返します。 |
String |
toString()
このオブジェクトの文字列表現(この
SNIHostNameオブジェクトのDNSホスト名を含む)を返します。 |
getEncoded, getTypepublic 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が不正である場合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が不正である場合public String getAsciiName()
SNIHostNameオブジェクトのStandardCharsets.US_ASCII準拠のホスト名を返します。
RFC 6066によれば、返されるホスト名は、A-labelを含む国際化ドメイン名である可能性があります。A-labelの仕様の詳細は、RFC 5890を参照してください。
SNIHostNameオブジェクトのStandardCharsets.US_ASCII準拠のホスト名public boolean equals(Object other)
RFC 6066によれば、DNSホスト名では大文字と小文字は区別されません。2つのサーバー・ホスト名が等しくなるのは、両者の名前タイプが同じであり、かつ大文字と小文字を区別せずに比較してホスト名が等しくなる場合のみです。
equals、クラス: SNIServerNameother - 比較する他のサーバー名オブジェクト。otherがこのインスタンスと等しいとみなされた場合にのみtrueObject.hashCode(), HashMappublic int hashCode()
SNIHostNameのハッシュ・コード値を返します。
ハッシュ・コード値は、このSNIHostNameのホスト名(大文字と小文字を区別しない)を使用して生成されます。
hashCode、クラス: SNIServerNameSNIHostNameのハッシュ・コード値。Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public String toString()
SNIHostNameオブジェクトのDNSホスト名を含む)を返します。
この表現の厳密な詳細は未指定であり変更される可能性がありますが、典型的な表現は次のようになります。
"type=host_name (0), value= <hostname>"
「<hostname>」はホスト名のASCII表現であり、A-labelを含む可能性があります。たとえば、ある擬似的なホスト名の戻り値は次のようになります。
"type=host_name (0), value=www.example.com"
または
"type=host_name (0), value=xn--fsqu00a.xn--0zwm56d"
この表現の厳密な詳細は未指定であり、変更される可能性があります。
toString、クラス: SNIServerNamepublic 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 - 一致する必要のあるホスト名を表す正規表現パターンSNIHostNameのSNIMatcherオブジェクトNullPointerException - regexがnullである場合PatternSyntaxException - 正規表現の構文が無効な場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.