Класс SSLContext
- java.lang.Object
-
- javax.net.ssl.SSLContext
public class SSLContext extends Object
Экземпляры этого класса представляют реализацию протокола защищенного сокета, который выступает в качестве фабрики для защищенных сокет-фабрик или SSLEngine. Этот класс инициализируется с набором (необязательным) менеджеров ключей и доверия, а также источником защищенных случайных байтов.
Каждая реализация Java-платформы обязана поддерживать следующие стандартные SSLContext протоколы:
TLSv1TLSv1.1TLSv1.2
- Since:
- 1.4
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | SSLContext(SSLContextSpi contextSpi,
Provider provider,
String protocol) | Создает объект SSLContext. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
SSLEngine | createSSLEngine() | Создает новый |
SSLEngine | createSSLEngine(String peerHost,
int peerPort) | Создает новый |
SSLSessionContext | getClientSessionContext() | Возвращает контекст сеанса клиента, который представляет набор SSL-сессий, доступных для использования во время фазы рукопожатия сокетов SSL на стороне клиента. |
static SSLContext | getDefault() | Возвращает стандартный контекст SSL. |
SSLParameters | getDefaultSSLParameters() | Возвращает копию SSLParameters, указывающую стандартные настройки для этого контекста SSL. |
static SSLContext | getInstance(String protocol) | Возвращает объект |
static SSLContext | getInstance(String protocol,
String provider) | Возвращает объект |
static SSLContext | getInstance(String protocol,
Provider provider) | Возвращает объект |
String | getProtocol() | Возвращает имя протокола этого объекта |
Provider | getProvider() | Возвращает поставщика этого объекта |
SSLSessionContext | getServerSessionContext() | Возвращает контекст сеанса сервера, который представляет набор SSL-сессий, доступных для использования во время фазы рукопожатия сокетов SSL на стороне сервера. |
SSLServerSocketFactory | getServerSocketFactory() | Возвращает объект |
SSLSocketFactory | getSocketFactory() | Возвращает объект |
SSLParameters | getSupportedSSLParameters() | Возвращает копию SSLParameters, указывающую поддерживаемые настройки для этого контекста SSL. |
void | init(KeyManager[] km,
TrustManager[] tm,
SecureRandom random) | Инициализирует этот контекст. |
static void | setDefault(SSLContext context) | Устанавливает стандартный контекст SSL. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
SSLContext
protected SSLContext(SSLContextSpi contextSpi,
Provider provider,
String protocol) Создаёт объект SSLContext.
- Параметры:
-
contextSpi- делегат -
provider- поставщик -
protocol- протокол
Методы
getDefault
public static SSLContext getDefault()
throws NoSuchAlgorithmException Возвращает стандартный контекст SSL.
Если стандартный контекст был установлен с помощью метода SSLContext.setDefault(), он возвращается. В противном случае первый вызов этого метода инициирует вызов SSLContext.getInstance("Default"). Если успешно, этот объект становится стандартным контекстом SSL и возвращается.
Стандартный контекст сразу готов к использованию и не требует инициализации.
- Возвращает:
- стандартный контекст SSL
- Исключения:
-
NoSuchAlgorithmException- если вызовSSLContext.getInstance()завершается ошибкой - С:
- 1.6
setDefault
public static void setDefault(SSLContext context)
Устанавливает стандартный контекст SSL. Он будет возвращаться последующими вызовами getDefault(). Стандартный контекст должен быть сразу готов к использованию и не требовать инициализации.
- Параметры:
-
context- SSLContext - Исключения:
-
NullPointerException- если контекст null -
SecurityException- если менеджер безопасности существует и его методcheckPermissionне разрешаетSSLPermission("setDefaultSSLContext") - С:
- 1.6
getInstance
public static SSLContext getInstance(String protocol)
throws NoSuchAlgorithmException Возвращает объект SSLContext, который реализует указанный протокол защищённого сокета.
Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SSLContext, инкапсулирующий реализацию SSLContextSpi из первого поставщика, который поддерживает указанный протокол.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить порядок поставщиков по умолчанию для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
protocol- стандартное имя запрошенного протокола. См. раздел SSLContext в Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах протоколов. - Возвращает:
- новый объект
SSLContext - Исключения:
-
NoSuchAlgorithmException- если ни один поставщик не поддерживает реализациюProviderдля указанного протокола -
NullPointerException- еслиprotocolявляетсяnull - См. также:
Provider
getInstance
public static SSLContext getInstance(String protocol,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException Возвращает объект SSLContext, который реализует указанный протокол защищённого сокета.
Возвращается новый объект SSLContext, инкапсулирующий реализацию SSLContextSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
protocol- стандартное имя запрошенного протокола. См. раздел SSLContext в Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах протоколов. -
provider- имя поставщика. - Возвращает:
- новый объект
SSLContext - Исключения:
-
IllegalArgumentException- если имя поставщикаnullили пустое -
NoSuchAlgorithmException- если реализацияSSLContextSpiдля указанного протокола недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиprotocolявляетсяnull - См. также:
Provider
getInstance
public static SSLContext getInstance(String protocol,
Provider provider)
throws NoSuchAlgorithmException Возвращает объект SSLContext, который реализует указанный протокол защищённого сокета.
Возвращается новый объект SSLContext, инкапсулирующий реализацию SSLContextSpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
protocol- стандартное имя запрошенного протокола. См. раздел SSLContext в Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах протоколов. -
provider- экземпляр поставщика. - Возвращает:
- новый объект
SSLContext - Исключения:
-
IllegalArgumentException- если поставщикnull -
NoSuchAlgorithmException- если реализацияSSLContextSpiдля указанного протокола недоступна от указанного объектаProvider -
NullPointerException- еслиprotocolявляетсяnull - См. также:
Provider
getProtocol
public final String getProtocol()
Возвращает имя протокола этого объекта SSLContext.
Это то же самое имя, которое было указано в одном из вызовов getInstance, которые создали этот объект SSLContext.
- Возвращает:
- имя протокола этого объекта
SSLContext.
getProvider
public final Provider getProvider()
Возвращает поставщика этого объекта SSLContext.
- Возвращает:
- поставщик этого объекта
SSLContext
init
public final void init(KeyManager[] km,
TrustManager[] tm,
SecureRandom random)
throws KeyManagementException Инициализирует этот контекст. Любой из двух первых параметров может быть null, в этом случае установленные поставщики безопасности будут искать реализацию соответствующего фабричного класса с наивысшим приоритетом. Аналогично, параметр SecureRandom может быть null, в этом случае будет использоваться реализация по умолчанию.
Используется только первый экземпляр определённого типа менеджера ключей и/или менеджера доверия в массиве. (Например, будет использован только первый javax.net.ssl.X509KeyManager в массиве.)
- Параметры:
-
km- источники аутентификационных ключей или null -
tm- источники принятия решений о доверии к подключению или null -
random- источник случайных чисел для этого генератора или null - Исключения:
-
KeyManagementException- если операция завершилась ошибкой
getSocketFactory
public final SSLSocketFactory getSocketFactory()
Возвращает объект SocketFactory для этого контекста.
- Возвращает:
- объект
SocketFactory - Исключения:
-
UnsupportedOperationException- если базовый поставщик не реализует операцию. -
IllegalStateException- если SSLContextImpl требует инициализации, а методinit()не был вызван
getServerSocketFactory
public final SSLServerSocketFactory getServerSocketFactory()
Возвращает объект ServerSocketFactory для этого контекста.
- Возвращает:
- объект
ServerSocketFactory - Исключения:
-
UnsupportedOperationException- если базовый поставщик не реализует операцию. -
IllegalStateException- если SSLContextImpl требует инициализации, а методinit()не был вызван
createSSLEngine
public final SSLEngine createSSLEngine()
Создаёт новый объект SSLEngine с использованием этого контекста.
Приложения, использующие этот фабричный метод, не предоставляют подсказок для внутренней стратегии повторного использования сеанса. Если подсказки необходимы, следует использовать createSSLEngine(String, int).
Некоторые наборы шифров (например, Kerberos) требуют информации о удалённом имени хоста, в таком случае этот фабричный метод не следует использовать.
- Примечание реализации:
- Зависит от поставщика, использует ли возвращаемый SSLEngine режим клиента или сервера по умолчанию для (D)TLS соединения. Реализация поставщика JDK SunJSSE по умолчанию использует режим сервера. Однако рекомендуется всегда явно устанавливать требуемый режим, вызвав
SSLEngine.setUseClientMode()перед вызовом других методов SSLEngine. - Возвращает:
- объект
SSLEngine - Исключения:
-
UnsupportedOperationException- если базовый поставщик не реализует операцию. -
IllegalStateException- если SSLContextImpl требует инициализации, а методinit()не был вызван - С:
- 1.5
createSSLEngine
public final SSLEngine createSSLEngine(String peerHost,
int peerPort) Создаёт новый объект SSLEngine с использованием этого контекста, используя информационные подсказки об удалённом хосте.
Приложения, использующие этот фабричный метод, предоставляют подсказки для внутренней стратегии повторного использования сеанса.
Некоторые наборы шифров (например, Kerberos) требуют информации о удалённом имени хоста, в таком случае peerHost необходимо указать.
- Примечание реализации:
- Зависит от поставщика, использует ли возвращаемый SSLEngine по умолчанию клиентский или серверный режим для соединения (D)TLS. Реализация поставщика JDK SunJSSE по умолчанию использует серверный режим. Однако рекомендуется всегда явно задавать желаемый режим, вызывая
SSLEngine.setUseClientMode()перед вызовом других методов SSLEngine. - Параметры:
-
peerHost- неофициальное имя хоста -
peerPort- неофициальный порт - Возвращает:
- новый объект
SSLEngine - Исключения:
-
UnsupportedOperationException- если базовый поставщик не реализует операцию. -
IllegalStateException- если SSLContextImpl требует инициализации, аinit()не был вызван - С момента:
- 1.5
getServerSessionContext
public final SSLSessionContext getServerSessionContext()
Возвращает контекст серверной сессии, представляющий набор SSL-сессий, доступных для использования во время фазы рукопожатия сокетов SSL на стороне сервера.
Этот контекст может быть недоступен в некоторых средах, в этом случае метод возвращает null. Например, когда базовый поставщик SSL не предоставляет реализацию интерфейса SSLSessionContext, этот метод возвращает null. В противном случае возвращается контекст сессии, отличный от null.
- Возвращает:
- контекст серверной сессии, связанный с этим SSL-контекстом
getClientSessionContext
public final SSLSessionContext getClientSessionContext()
Возвращает контекст клиентской сессии, представляющий набор SSL-сессий, доступных для использования во время фазы рукопожатия сокетов SSL на стороне клиента.
Этот контекст может быть недоступен в некоторых средах, в этом случае метод возвращает null. Например, когда базовый поставщик SSL не предоставляет реализацию интерфейса SSLSessionContext, этот метод возвращает null. В противном случае возвращается контекст сессии, отличный от null.
- Возвращает:
- контекст клиентской сессии, связанный с этим SSL-контекстом
getDefaultSSLParameters
public final SSLParameters getDefaultSSLParameters()
Возвращает копию SSLParameters, указывающую значения по умолчанию для этого SSL-контекста.
Массивы ciphersuites и protocols параметров всегда будут иметь значения, отличные от null.
- Возвращает:
- копию объекта SSLParameters со значениями по умолчанию
- Исключения:
-
UnsupportedOperationException- если параметры SSL по умолчанию получить не удалось. - С момента:
- 1.6
getSupportedSSLParameters
public final SSLParameters getSupportedSSLParameters()
Возвращает копию SSLParameters, указывающую поддерживаемые значения для этого SSL-контекста.
Массивы ciphersuites и protocols параметров всегда будут иметь значения, отличные от null.
- Возвращает:
- копию объекта SSLParameters с поддерживаемыми значениями
- Исключения:
-
UnsupportedOperationException- если поддерживаемые параметры SSL получить не удалось. - С момента:
- 1.6
© 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/SSLContext.html