Spec-Zone.ru › OpenJDK 24

Класс 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, "Указание имени сервера", TLS Extensions (RFC 6066), "HostName" содержит полное доменное имя сервера, как понимает клиент. Кодированное значение имени сервера представляется как строка байтов с использованием кодировки ASCII без конечной точки. Это позволяет поддерживать международные доменные имена (IDN) с помощью A-меток (ASCII-совместимая кодировка (ACE) форма допустимой строки международных доменных имён для приложений (IDNA)), определённых в RFC 5890.

Обратите внимание, что объекты SNIHostName неизменяемы.

Since:
1.8
External Specifications
  • RFC 5890: Международные доменные имена для приложений (IDNA): Определения и структура документа
  • RFC 6066: Расширения безопасности транспортного уровня (TLS): Определения расширений
See Also:
  • 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()
Возвращает имя хоста этого объекта SNIHostName, совместимое с StandardCharsets.US_ASCII.
int hashCode()
Возвращает хэш-код для этого SNIHostName.
String toString()
Возвращает строковое представление объекта, включая DNS-имя хоста в этом объекте SNIHostName.

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

getEncoded, getType

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

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

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

SNIHostName

public SNIHostName(String hostname)
Создаёт SNIHostName с указанным именем хоста.

Обратите внимание, что согласно RFC 6066, закодированное значение имени сервера для имени хоста соответствует спецификации StandardCharsets.US_ASCII. В этом методе hostname может быть удобным международным именем домена (IDN). IDN.toASCII(String, int) используется для соблюдения ограничений на символы ASCII в именах хостов (см. RFC 3490, RFC 1122, RFC 1123) и перевода hostname в кодировку, совместимую с ASCII (ACE), как:

     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: Расширения безопасности транспортного уровня (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. IDN.toASCII(String) используется для перевода аргумента encoded в имя хоста, совместимое с кодировкой ASCII (ACE).

Сильно рекомендуется использовать этот конструктор только для анализа закодированного значения имени в запрошенном расширении 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: Расширения безопасности транспортного уровня (TLS)
  • RFC 6066: Расширения безопасности транспортного уровня (TLS): Определения расширений

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

getAsciiName

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

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

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

equals

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

Согласно RFC 6066, имена хостов DNS нечувствительны к регистру. Два имени сервера равны тогда и только тогда, когда они имеют одинаковый тип имени и имена равны в сравнении, не учитывающем регистр.

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

hashCode

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

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

Overrides:
hashCode в классе SNIServerName
Возвращает:
значение хэш-кода для этого SNIHostName.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.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"
 

Обратите внимание, что точные детали представления не определены и могут быть изменены.

Overrides:
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".
Parameters:
regex - шаблон регулярного выражения, представляющий имя(а) хоста(ов) для сопоставления
Returns:
объект SNIMatcher для SNIHostName
Throws:
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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/net/ssl/SNIHostName.html

Spec-Zone.ru

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