Класс SNIHostName
public final class SNIHostName extends SNIServerName
host_name в расширении Server Name Indication (SNI). Как описано в разделе 3, «Указание имени сервера», документа TLS Extensions (RFC 6066), «HostName» содержит полное доменное имя сервера, как понимает клиент. Кодированное значение имени сервера представлено в виде байтовой строки с использованием кодировки ASCII без заключительной точки. Это позволяет поддерживать международные доменные имена (IDN) с помощью меток A (форма ACE — совместимой с ASCII кодировки — допустимой строки международных доменных имён для приложений (IDNA)) определённых в RFC 5890.
Обратите внимание, что объекты SNIHostName являются неизменяемыми.
- Since:
- 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. |
Методы, объявленные в классе javax.net.ssl.SNIServerName
getEncoded, getType
Подробное описание конструкторов
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является недопустимым
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является недопустимым
Подробное описание методов
getAsciiName
public String getAsciiName()
StandardCharsets.US_ASCII, этого объекта SNIHostName. Обратите внимание, что согласно RFC 6066, возвращённое имя хоста может быть международным доменным именем, содержащим метки A. См. RFC 5890 для получения дополнительной информации о спецификации меток A.
- Возвращает:
- имя хоста, совместимое с
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, 2023, 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/21/docs/api/java.base/javax/net/ssl/SNIHostName.html