Класс 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() Возвращает |
Collection<SNIMatcher> |
getSNIMatchers() Возвращает |
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) Устанавливает желаемые |
void |
setSNIMatchers(Collection<SNIMatcher> matchers) Устанавливает |
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.