Spec-Zone.ru › OpenJDK 25

Класс SNIHostName

java.lang.Object
javax.net.ssl.SNIServerName
javax.net.ssl.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
Внешние спецификации
  • RFC 5890: Интернационализированные доменные имена для приложений (IDNA): определения и структура документа
  • RFC 6066: Расширения протокола Transport Layer Security (TLS): определения расширений
См. также:
  • SNIServerName
  • StandardConstants.SNI_HOST_NAME

Краткое описание конструкторов

Конструктор Описание
SNIHostName(byte[] encoded)
Создаёт SNIHostName с использованием указанного закодированного значения.
SNIHostName(String hostname)
Создаёт SNIHostName с использованием указанного имени узла.

Краткое описание методов

Модификатор и тип Метод Описание
static SNIMatcher createSNIMatcher(String regex)
Создаёт объект SNIMatcher для SNIHostName.
boolean equals(Object other)
Сравнивает это имя сервера с указанным объектом.
String getAsciiName()
Возвращает имя узла, соответствующее StandardCharsets.US_ASCII, для этого объекта SNIHostName.
int hashCode()
Возвращает хеш-код этого SNIHostName.
String toString()
Возвращает строковое представление объекта, включающее DNS-имя узла в этом объекте SNIHostName.

Методы, объявленные в классе SNIServerName

getEncoded, getType

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

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 недопустим
Внешние спецификации
  • RFC 1122: Требования к интернет-узлам — уровни взаимодействия
  • RFC 1123: Требования к интернет-узлам — приложения и поддержка
  • RFC 3490: Интернационализация доменных имён в приложениях (IDNA)
  • RFC 6066: Расширения протокола Transport Layer Security (TLS): определения расширений

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 недопустим
Внешние спецификации
  • RFC 1122: Требования к интернет-узлам — уровни взаимодействия
  • RFC 1123: Требования к интернет-узлам — приложения и поддержка
  • RFC 3490: Интернационализация доменных имён в приложениях (IDNA)
  • RFC 4366: Расширения протокола Transport Layer Security (TLS)
  • RFC 6066: Расширения протокола Transport Layer Security (TLS): определения расширений

Подробное описание методов

getAsciiName

public String getAsciiName()
Возвращает имя узла, соответствующее StandardCharsets.US_ASCII, для этого объекта SNIHostName.

Обратите внимание, что согласно RFC 6066 возвращаемое имя узла может быть интернационализированным доменным именем, содержащим A-метки. Дополнительные сведения о спецификации A-меток см. в документе RFC 5890.

Возвращает:
имя узла, соответствующее StandardCharsets.US_ASCII, для этого объекта SNIHostName
Внешние спецификации
  • RFC 5890: Интернационализированные доменные имена для приложений (IDNA): определения и структура документа
  • RFC 6066: Расширения протокола Transport Layer Security (TLS): определения расширений

equals

public boolean equals(Object other)
Сравнивает это имя сервера с указанным объектом.

Согласно RFC 6066, регистр символов в DNS-именах узлов не учитывается. Имена двух серверов равны тогда и только тогда, когда они имеют одинаковый тип имени и их имена узлов равны при сравнении без учёта регистра.

Переопределяет:
equals в классе SNIServerName
Параметры:
other — другой объект имени сервера для сравнения.
Возвращает:
true, если и только если other считается равным этому экземпляру
Внешние спецификации
  • RFC 6066: Расширения протокола Transport Layer Security (TLS): определения расширений
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этого SNIHostName.

Значение хеш-кода вычисляется с использованием имени узла этого SNIHostName без учёта регистра.

Переопределяет:
hashCode в классе SNIServerName
Возвращает:
хеш-код этого SNIHostName.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Возвращает строковое представление объекта, включающее DNS-имя узла в этом объекте 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 — если синтаксис регулярного выражения недопустим

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где приведены более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API