Spec-Zone.ru › OpenJDK 8

Класс SSLParameters

  • java.lang.Object
    • javax.net.ssl.SSLParameters

public class SSLParameters
extends Object

Оборачивает параметры для подключения SSL/TLS. Параметры включают список поддерживаемых наборов шифрования в рукопожатии SSL/TLS, список разрешенных протоколов, алгоритм идентификации конечной точки во время рукопожатия SSL/TLS, указание имени сервера (SNI), ограничения алгоритмов и то, должны ли серверы SSL/TLS запрашивать или требовать аутентификацию клиента и т.д.

SSLParameters можно создать с помощью конструкторов в этом классе. Объекты также можно получить, используя методы getSSLParameters() в SSLSocket и SSLServerSocket и SSLEngine, или методы getDefaultSSLParameters() и getSupportedSSLParameters() в SSLContext.

SSLParameters можно применить к подключению через методы SSLSocket.setSSLParameters() и SSLServerSocket.setSSLParameters() и SSLEngine.setSSLParameters().

Например:

SSLParameters p = sslSocket.getSSLParameters();
p.setProtocols(new String[] { "TLSv1.2" });
p.setCipherSuites(
    new String[] { "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", ... });
p.setApplicationProtocols(new String[] {"h2", "http/1.1"});
sslSocket.setSSLParameters(p);
*
С момента:
1.6
См. также:
SSLSocket, SSLEngine, SSLContext

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

Конструктор и описание
SSLParameters()

Создаёт SSLParameters.

SSLParameters(String[] cipherSuites)

Создаёт SSLParameters из указанного массива наборов шифрования.

SSLParameters(String[] cipherSuites, String[] protocols)

Создаёт SSLParameters из указанного массива наборов шифрования и протоколов.

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

Модификатор и тип Метод и описание
AlgorithmConstraints getAlgorithmConstraints()

Возвращает ограничения на криптографические алгоритмы.

String[] getApplicationProtocols()

Возвращает упорядоченный массив имён протоколов прикладного уровня, которые могут быть согласованы по протоколам SSL/TLS/DTLS.

String[] getCipherSuites()

Возвращает копию массива наборов шифрования или null, если они не были заданы.

String getEndpointIdentificationAlgorithm()

Получает алгоритм идентификации конечной точки.

boolean getNeedClientAuth()

Возвращает, требуется ли аутентификация клиента.

String[] getProtocols()

Возвращает копию массива протоколов или null, если они не были заданы.

List<SNIServerName> getServerNames()

Возвращает List, содержащий все SNIServerName параметра указания имени сервера (SNI), или null, если он не был задан.

Collection<SNIMatcher> getSNIMatchers()

Возвращает Collection, содержащую все SNIMatcher параметра указания имени сервера (SNI), или null, если он не был задан.

boolean getUseCipherSuitesOrder()

Возвращает, следует ли учитывать предпочтение локальных наборов шифрования.

boolean getWantClientAuth()

Возвращает, запрашивается ли аутентификация клиента.

void setAlgorithmConstraints(AlgorithmConstraints constraints)

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

void setApplicationProtocols(String[] protocols)

Устанавливает упорядоченный массив имён протоколов прикладного уровня, которые могут быть согласованы по протоколам SSL/TLS/DTLS.

void setCipherSuites(String[] cipherSuites)

Устанавливает массив наборов шифрования.

void setEndpointIdentificationAlgorithm(String algorithm)

Устанавливает алгоритм идентификации конечной точки.

void setNeedClientAuth(boolean needClientAuth)

Устанавливает, требуется ли аутентификация клиента.

void setProtocols(String[] protocols)

Устанавливает массив протоколов.

void setServerNames(List<SNIServerName> serverNames)

Устанавливает желаемые SNIServerName параметра указания имени сервера (SNI).

void setSNIMatchers(Collection<SNIMatcher> matchers)

Устанавливает SNIMatcher параметра указания имени сервера (SNI).

void setUseCipherSuitesOrder(boolean honorOrder)

Устанавливает, следует ли учитывать предпочтение локальных наборов шифрования.

void setWantClientAuth(boolean wantClientAuth)

Устанавливает, запрашивается ли аутентификация клиента.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

SSLParameters

public SSLParameters()

Создаёт SSLParameters.

Значения cipherSuites, protocols, ограничений криптографических алгоритмов, алгоритма идентификации конечной точки, имён серверов и соответствий имён серверов установлены в null, useCipherSuitesOrder, wantClientAuth и needClientAuth установлены в false.

SSLParameters

public SSLParameters(String[] cipherSuites)

Создаёт SSLParameters из указанного массива наборов шифров.

Вызов этого конструктора эквивалентен вызову конструктора без аргументов, за которым следует setCipherSuites(cipherSuites);.

Параметры:
cipherSuites - массив наборов шифров (или null)

SSLParameters

public SSLParameters(String[] cipherSuites,
                     String[] protocols)

Создаёт SSLParameters из указанного массива наборов шифров и протоколов.

Вызов этого конструктора эквивалентен вызову конструктора без аргументов, за которым следует setCipherSuites(cipherSuites); setProtocols(protocols);.

Параметры:
cipherSuites - массив наборов шифров (или null)
protocols - массив протоколов (или null)

Методы

getCipherSuites

public String[] getCipherSuites()

Возвращает копию массива наборов шифров или null, если они не были заданы.

Возвращает:
копию массива наборов шифров или null, если они не были заданы.

setCipherSuites

public void setCipherSuites(String[] cipherSuites)

Устанавливает массив наборов шифров.

Параметры:
cipherSuites - массив наборов шифров (или null)

getProtocols

public String[] getProtocols()

Возвращает копию массива протоколов или null, если они не были заданы.

Возвращает:
копию массива протоколов или null, если они не были заданы.

setProtocols

public void setProtocols(String[] protocols)

Устанавливает массив протоколов.

Параметры:
protocols - массив протоколов (или null)

getWantClientAuth

public boolean getWantClientAuth()

Возвращает, требуется ли аутентификация клиента.

Возвращает:
требуется ли аутентификация клиента.

setWantClientAuth

public void setWantClientAuth(boolean wantClientAuth)

Устанавливает, требуется ли аутентификация клиента. Вызов этого метода очищает флаг needClientAuth.

Параметры:
wantClientAuth - требуется ли аутентификация клиента

getNeedClientAuth

public boolean getNeedClientAuth()

Возвращает, обязательна ли аутентификация клиента.

Возвращает:
обязательна ли аутентификация клиента.

setNeedClientAuth

public void setNeedClientAuth(boolean needClientAuth)

Устанавливает, обязательна ли аутентификация клиента. Вызов этого метода очищает флаг wantClientAuth.

Параметры:
needClientAuth - обязательна ли аутентификация клиента

getAlgorithmConstraints

public AlgorithmConstraints getAlgorithmConstraints()

Возвращает ограничения криптографических алгоритмов.

Возвращает:
ограничения криптографических алгоритмов или null, если ограничения не были установлены
С:
1.7
См. также:
setAlgorithmConstraints(AlgorithmConstraints)

setAlgorithmConstraints

public void setAlgorithmConstraints(AlgorithmConstraints constraints)

Устанавливает ограничения криптографических алгоритмов, которые будут использоваться дополнительно к тем, которые сконфигурированы средой выполнения.

Если параметр constraints не равен null, каждый криптографический алгоритм, ключ и параметры алгоритма, используемые в рукопожатии SSL/TLS, должны быть разрешены ограничениями.

Параметры:
constraints - ограничения алгоритмов (или null)
С:
1.7

getEndpointIdentificationAlgorithm

public String getEndpointIdentificationAlgorithm()

Получает алгоритм идентификации конечной точки.

Возвращает:
алгоритм идентификации конечной точки или null, если он не был задан.
С:
1.7
См. также:
X509ExtendedTrustManager, setEndpointIdentificationAlgorithm(String)

setEndpointIdentificationAlgorithm

public void setEndpointIdentificationAlgorithm(String algorithm)

Устанавливает алгоритм идентификации конечной точки.

Если параметр algorithm не равен null и не пуст, процедуры идентификации/проверки конечной точки должны обрабатываться во время рукопожатия SSL/TLS. Это необходимо для предотвращения атак «человек посередине».

Параметры:
algorithm - Стандартное строковое имя алгоритма идентификации конечной точки (или null). См. Приложение А в Спецификации и справке API архитектуры Java Cryptography для получения информации о стандартных именах алгоритмов.
С:
1.7
См. также:
X509ExtendedTrustManager

setServerNames

public final void setServerNames(List<SNIServerName> serverNames)

Устанавливает требуемые SNIServerName параметра Server Name Indication (SNI).

Этот метод полезен только для SSLSocket или SSLEngine, работающих в режиме клиента.

Обратите внимание, что список serverNames клонируется для защиты от последующих изменений.

Параметры:
serverNames - список требуемых SNIServerName (или null)
Исключения:
NullPointerException - если serverNames содержит null элемент
IllegalArgumentException - если serverNames содержит более одного имени одного типа
С:
1.8
См. также:
SNIServerName, getServerNames()

getServerNames

public final List<SNIServerName> getServerNames()

Возвращает List, содержащий все SNIServerName параметра Server Name Indication (SNI), или null, если он не был задан.

Этот метод полезен только для SSLSocket или SSLEngine, работающих в режиме клиента.

Для подключений SSL/TLS поставщик SSL/TLS может указать значение по умолчанию для определённого типа имени сервера. В режиме клиента рекомендуется, чтобы поставщики по умолчанию включали указание имени сервера, когда сервер может быть обнаружен по поддерживаемому типу имени сервера.

Рекомендуется, чтобы поставщики инициализировали указания имени сервера по умолчанию при создании SSLSocket/SSLEngine. В следующих примерах имя сервера может быть представлено экземпляром SNIHostName, который был инициализирован именем хоста "www.example.com" и типом StandardConstants.SNI_HOST_NAME.

Socket socket =
         sslSocketFactory.createSocket("www.example.com", 443);
или
SSLEngine engine =
         sslContext.createSSLEngine("www.example.com", 443);
Возвращает:
null или неизменяемый список ненулевых SNIServerName
С:
1.8
См. также:
List, setServerNames(List)

setSNIMatchers

public final void setSNIMatchers(Collection<SNIMatcher> matchers)

Устанавливает SNIMatcher параметра Server Name Indication (SNI).

Этот метод полезен только для SSLSocket или SSLEngine, работающих в режиме сервера.

Обратите внимание, что коллекция matchers клонируется для защиты от последующих изменений.

Параметры:
matchers - коллекция SNIMatcher (или null)
Исключения:
NullPointerException - если matchers содержит null элемент
IllegalArgumentException - если matchers содержит более одного имени одного типа
С:
1.8
См. также:
Collection, SNIMatcher, getSNIMatchers()

getSNIMatchers

public final Collection<SNIMatcher> getSNIMatchers()

Возвращает Collection, содержащий все SNIMatcher параметра Server Name Indication (SNI), или null, если он не был задан.

Этот метод полезен только для SSLSocket или SSLEngine, работающих в режиме сервера.

Для лучшей совместимости поставщики обычно не определяют соответствия по умолчанию, чтобы серверы по умолчанию игнорировали расширение SNI и продолжали рукопожатие.

Возвращает:
null или неизменяемая коллекция ненулевых SNIMatcher
С:
1.8
См. также:
SNIMatcher, setSNIMatchers(Collection)

setUseCipherSuitesOrder

public final void setUseCipherSuitesOrder(boolean honorOrder)

Устанавливает, должны ли быть учтены предпочтения локальных наборов шифров.

Параметры:
honorOrder - должны ли быть учтены предпочтения локальных наборов шифров в #getCipherSuites во время рукопожатия SSL/TLS.
С:
1.8
См. также:
getUseCipherSuitesOrder()

getUseCipherSuitesOrder

public final boolean getUseCipherSuitesOrder()

Возвращает, должны ли быть учтены предпочтения локальных наборов шифров.

Возвращает:
должны ли быть учтены предпочтения локальных наборов шифров в #getCipherSuites во время рукопожатия SSL/TLS.
С:
1.8
См. также:
setUseCipherSuitesOrder(boolean)

getApplicationProtocols

public String[] getApplicationProtocols()

Возвращает упорядоченный массив имён протоколов прикладного уровня, которые могут быть переговорены по протоколам SSL/TLS/DTLS.

Массив может быть пустым (нулевой длины), в этом случае указания протоколов не будут использоваться.

Этот метод возвращает новый массив каждый раз при его вызове.

Возвращает:
не нулевой, возможно, пустой массив имён прикладных протоколов. Массив упорядочен по предпочтению протоколов, при этом protocols[0] имеет наивысший приоритет.
Since:
8
См. также:
setApplicationProtocols(java.lang.String[])

setApplicationProtocols

public void setApplicationProtocols(String[] protocols)

Устанавливает упорядоченный массив имён протоколов прикладного уровня, которые могут быть переговорены по протоколам SSL/TLS/DTLS.

Если протоколы прикладного уровня поддерживаются реализацией SSL/TLS, этот метод настраивает, какие значения могут быть переговорены такими протоколами, как RFC 7301 , протокол переговорной связи прикладного уровня (ALPN).

Если ожидается, что этот конец соединения предложит значения протоколов прикладного уровня, все протоколы, настроенные этим методом, будут отправлены партнёру.

Если ожидается, что этот конец соединения выберет значение протокола прикладного уровня, значения protocols , настроенные этим методом, сравниваются со значениями, отправленными партнёром. Первое совпавшее значение становится переговорным значением. Если ни одно из protocols не было запрошено партнёром, базовый протокол определит, какие действия предпринять. (Например, ALPN отправит предупреждение "no_application_protocol" и прекратит соединение.)

Требования к реализации:
Этот метод создаст копию массива protocols.
Параметры:
protocols - упорядоченный массив протоколов прикладного уровня, где protocols[0] имеет наивысший приоритет. Если массив пустой (нулевой длины), указания протоколов не будут использоваться.
Исключение:
IllegalArgumentException - если protocols равен null или если какой-либо элемент в непустом массиве равен null или является пустой (нулевой длины) строкой
Since:
8
См. также:
getApplicationProtocols()

© 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.

Spec-Zone.ru

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