Класс 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
- См. также:
-
SNIServerName,StandardConstants.SNI_HOST_NAME
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SNIHostName(byte[] encoded) | Создаёт |
SNIHostName(String hostname) | Создаёт |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static SNIMatcher | createSNIMatcher(String regex) | Создаёт объект |
boolean | equals(Object other) | Сравнивает это имя сервера с указанным объектом. |
String | getAsciiName() | Возвращает имя хоста, совместимое с |
int | hashCode() | Возвращает значение хэш-кода для этого |
String | toString() | Возвращает строковое представление объекта, включая доменное имя DNS в этом |
Методы, объявленные в классе 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- еслиhostnamenull -
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- еслиencodednull -
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считается равным этому экземпляру - См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает значение хэш-кода для этого SNIHostName.
Значение хэш-кода генерируется с использованием имени хоста этого SNIHostName без учёта регистра.
- Переопределяет:
-
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"
Обратите внимание, что точные детали представления не определены и могут быть изменены.
- Переопределяет:
-
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- еслиregexnull -
PatternSyntaxException- если синтаксис регулярного выражения некорректен
© 1993, 2020, 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/11/docs/api/java.base/javax/net/ssl/SNIHostName.html