Класс SNIHostName
public final class SNIHostName extends SNIServerName
host_name в расширении Server Name Indication (SNI). Как описано в разделе 3 «Server Name Indication» документа Расширения TLS (RFC 6066), «HostName» содержит полное DNS-имя узла сервера, известное клиенту. Закодированное значение имени сервера для имени узла представлено в виде строки байтов с использованием кодировки ASCII без завершающей точки. Это позволяет поддерживать интернационализированные доменные имена (IDN) с помощью A-меток (формы ASCII-совместимой кодировки (ACE) допустимой строки интернационализированных доменных имён для приложений (IDNA)), определённых в документе RFC 5890.
Обратите внимание, что объекты SNIHostName неизменяемы.
- Начиная с:
- 1.8
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SNIHostName |
Создаёт SNIHostName с использованием указанного закодированного значения. |
SNIHostName |
Создаёт SNIHostName с использованием указанного имени узла. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static SNIMatcher |
createSNIMatcher |
Создаёт объект SNIMatcher для SNIHostName. |
boolean |
equals |
Сравнивает это имя сервера с указанным объектом. |
String |
getAsciiName() |
Возвращает имя узла, соответствующее StandardCharsets.US_ASCII, для этого объекта SNIHostName. |
int |
hashCode() |
Возвращает хеш-код этого SNIHostName. |
String |
toString() |
Возвращает строковое представление объекта, включающее DNS-имя узла в этом объекте SNIHostName. |
Методы, объявленные в классе 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не является допустимым интернационализированным доменным именем (IDN), соответствующим спецификации RFC 3490.
- Параметры:
-
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.UTF_8 или StandardCharsets.US_ASCII. Для преобразования аргумента encoded в имя узла в ASCII-совместимой кодировке (ACE) используется IDN.toASCII(String).
Настоятельно рекомендуется использовать этот конструктор только для разбора закодированного значения имени в запрошенном расширении SNI. В противном случае, чтобы соответствовать RFC 6066, всегда используйте кодировку, соответствующую StandardCharsets.US_ASCII, и соблюдайте ограничения на символы ASCII в именах узлов (см. RFC 3490, RFC 1122, RFC 1123) для аргумента encoded либо используйте вместо него SNIHostName(String).
Аргумент encoded является недопустимым, если:
-
encodedпуст, -
encodedзаканчивается точкой, -
encodedзакодирован не с использованием кодировкиStandardCharsets.US_ASCIIилиStandardCharsets.UTF_8, -
encodedне является допустимым интернационализированным доменным именем (IDN), соответствующим спецификации RFC 3490.
Обратите внимание, что массив байтов encoded клонируется для защиты от последующего изменения.
- Параметры:
-
encoded— закодированное имя узла этого имени сервера - Исключения:
-
NullPointerException— еслиencodedравноnull -
IllegalArgumentException— еслиencodedнедопустим - Внешние спецификации
Подробное описание методов
getAsciiName
public String getAsciiName()
StandardCharsets.US_ASCII, для этого объекта SNIHostName. Обратите внимание, что согласно RFC 6066 возвращаемое имя узла может быть интернационализированным доменным именем, содержащим A-метки. Дополнительные сведения о спецификации A-меток см. в документе RFC 5890.
- Возвращает:
- имя узла, соответствующее
StandardCharsets.US_ASCII, для этого объектаSNIHostName - Внешние спецификации
equals
public boolean equals(Object other)
Согласно RFC 6066, регистр символов в DNS-именах узлов не учитывается. Имена двух серверов равны тогда и только тогда, когда они имеют одинаковый тип имени и их имена узлов равны при сравнении без учёта регистра.
- Переопределяет:
-
equalsв классеSNIServerName - Параметры:
-
other— другой объект имени сервера для сравнения. - Возвращает:
- true, если и только если
otherсчитается равным этому экземпляру - Внешние спецификации
- См. также:
hashCode
public int hashCode()
SNIHostName. Значение хеш-кода вычисляется с использованием имени узла этого SNIHostName без учёта регистра.
- Переопределяет:
-
hashCodeв классеSNIServerName - Возвращает:
- хеш-код этого
SNIHostName. - См. также:
toString
public String toString()
SNIHostName. Точный формат представления не определён и может измениться, однако следующий вариант можно считать типичным:
"type=host_name (0), value=<hostname>"
«<hostname>» — это представление имени узла в ASCII, которое может содержать A-метки. Например, возвращаемое значение для условного имени узла может выглядеть так:
"type=host_name (0), value=www.example.com"
или
"type=host_name (0), value=xn--fsqu00a.xn--0zwm56d"
Обратите ВНИМАНИЕ: точный формат представления не определён и может измениться.
- Переопределяет:
-
toStringв классеSNIServerName - Возвращает:
- строковое представление объекта.
createSNIMatcher
public static SNIMatcher createSNIMatcher(String regex)
SNIMatcher для SNIHostName. Сервер может использовать этот метод для проверки допустимых 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— шаблон регулярного выражения, определяющий имя (имена) узла для поиска соответствия - Возвращает:
- объект
SNIMatcherдляSNIHostName - Исключения:
-
NullPointerException— еслиregexравноnull -
PatternSyntaxException— если синтаксис регулярного выражения недопустим
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/net/ssl/SNIHostName.html