Класс SSLContext

public class SSLContext
extends Object

Экземпляры этого класса представляют реализацию протокола защищенного сокета, который выступает в качестве фабрики для защищенных сокет-фабрик или SSLEngine. Этот класс инициализируется с набором (необязательным) менеджеров ключей и доверия, а также источником защищенных случайных байтов.

Каждая реализация Java-платформы обязана поддерживать следующие стандартные SSLContext протоколы:

  • TLSv1
  • TLSv1.1
  • TLSv1.2
Эти протоколы описаны в разделе SSLContext спецификации стандартных имен алгоритмов Java Security. Обратитесь к документации выпуска вашей реализации, чтобы узнать о поддержке других алгоритмов.
Since:
1.4

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

Модификатор Конструктор Описание
protected SSLContext​(SSLContextSpi contextSpi, Provider provider, String protocol)

Создает объект SSLContext.

Методы

Модификатор и тип Метод Описание
SSLEngine createSSLEngine()

Создает новый SSLEngine с использованием этого контекста.

SSLEngine createSSLEngine​(String peerHost, int peerPort)

Создает новый SSLEngine с использованием этого контекста с информацией о рекомендательном узле.

SSLSessionContext getClientSessionContext()

Возвращает контекст сеанса клиента, который представляет набор SSL-сессий, доступных для использования во время фазы рукопожатия сокетов SSL на стороне клиента.

static SSLContext getDefault()

Возвращает стандартный контекст SSL.

SSLParameters getDefaultSSLParameters()

Возвращает копию SSLParameters, указывающую стандартные настройки для этого контекста SSL.

static SSLContext getInstance​(String protocol)

Возвращает объект SSLContext, реализующий указанный протокол защищенного сокета.

static SSLContext getInstance​(String protocol, String provider)

Возвращает объект SSLContext, реализующий указанный протокол защищенного сокета.

static SSLContext getInstance​(String protocol, Provider provider)

Возвращает объект SSLContext, реализующий указанный протокол защищенного сокета.

String getProtocol()

Возвращает имя протокола этого объекта SSLContext.

Provider getProvider()

Возвращает поставщика этого объекта SSLContext.

SSLSessionContext getServerSessionContext()

Возвращает контекст сеанса сервера, который представляет набор SSL-сессий, доступных для использования во время фазы рукопожатия сокетов SSL на стороне сервера.

SSLServerSocketFactory getServerSocketFactory()

Возвращает объект ServerSocketFactory для этого контекста.

SSLSocketFactory getSocketFactory()

Возвращает объект SocketFactory для этого контекста.

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.preferred Security, чтобы определить порядок поставщиков по умолчанию для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методом 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

Spec-Zone .ru
спецификации, руководства, описания, API