Spec-Zone.ru › OpenJDK 25

Класс SSLServerSocket

java.lang.Object
java.net.ServerSocket
javax.net.ssl.SSLServerSocket
Все реализуемые интерфейсы:
Closeable, AutoCloseable
public abstract class SSLServerSocket extends ServerSocket
Этот класс расширяет ServerSocket и предоставляет защищённые серверные сокеты с использованием таких протоколов, как Secure Sockets Layer (SSL) или Transport Layer Security (TLS).

Экземпляры этого класса обычно создаются с помощью SSLServerSocketFactory. Основная функция SSLServerSocket — создавать SSLSocketы, acceptя соединения.

SSLServerSocket содержит несколько элементов данных состояния, которые наследуются SSLSocket при создании сокета. К ним относятся включённые наборы шифров и протоколы, необходимость аутентификации клиента, а также режим, в котором должны начинать рукопожатие создаваемые сокеты: клиентский или серверный. Унаследованное состояние созданного SSLSocket можно переопределить, вызвав соответствующие методы.

С версии:
1.4
См. также:
  • ServerSocket
  • SSLSocket

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

SSLServerSocket()
SSLServerSocket(int port)
SSLServerSocket(int port, int backlog)
SSLServerSocket(int port, int backlog, InetAddress address)
Модификатор Конструктор Описание
protected
Используется только подклассами.
protected
Используется только подклассами.
protected
Используется только подклассами.
protected
Используется только подклассами.

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

Модификатор и тип Метод Описание
abstract String[] getEnabledCipherSuites()
Возвращает список наборов шифров, которые в данный момент включены для использования вновь принимаемыми соединениями.
abstract String[] getEnabledProtocols()
Возвращает названия протоколов, которые в данный момент включены для использования вновь принимаемыми соединениями.
abstract boolean getEnableSessionCreation()
Возвращает true, если сокеты, создаваемые на основе этого серверного сокета, могут устанавливать новые сеансы SSL.
abstract boolean getNeedClientAuth()
Возвращает true, если аутентификация клиента будет обязательной для вновь acceptованных SSLSocketов в серверном режиме.
SSLParameters getSSLParameters()
Возвращает SSLParameters, действующие для вновь принимаемых соединений.
abstract String[] getSupportedCipherSuites()
Возвращает названия наборов шифров, которые можно включить для использования в SSL-соединении.
abstract String[] getSupportedProtocols()
Возвращает названия протоколов, которые можно включить для использования.
abstract boolean getUseClientMode()
Возвращает true, если принимаемые соединения будут работать в клиентском режиме SSL.
abstract boolean getWantClientAuth()
Возвращает true, если для вновь принимаемых соединений в серверном режиме будет запрошена аутентификация клиента.
abstract void setEnabledCipherSuites(String[] suites)
Задаёт наборы шифров, включённые для использования принимаемыми соединениями.
abstract void setEnabledProtocols(String[] protocols)
Определяет, какие именно протоколы включены для использования принимаемыми соединениями.
abstract void setEnableSessionCreation(boolean flag)
Определяет, могут ли сокеты, создаваемые на основе этого серверного сокета, устанавливать новые сеансы SSL.
abstract void setNeedClientAuth(boolean need)
Определяет, будут ли acceptованные SSLSocketsы в серверном режиме изначально настроены на обязательную аутентификацию клиента.
void setSSLParameters(SSLParameters params)
Применяет SSLParameters к вновь принимаемым соединениям.
abstract void setUseClientMode(boolean mode)
Определяет, будут ли принимаемые соединения работать в режиме сервера SSL (по умолчанию) или в режиме клиента SSL.
abstract void setWantClientAuth(boolean want)
Определяет, будут ли acceptованные SSLSocketsы в серверном режиме изначально настроены на запрос аутентификации клиента.

Методы, объявленные в классе ServerSocket

accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getOption, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setOption, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, supportedOptions, toString

Методы, объявленные в классе Object

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

Подробное описание конструкторов

SSLServerSocket

protected SSLServerSocket() throws IOException
Используется только подклассами.

Создаёт непривязанный серверный TCP-сокет с использованием контекста аутентификации по умолчанию.

Выбрасывает:
IOException — если при создании сокета возникает ошибка ввода-вывода

SSLServerSocket

protected SSLServerSocket(int port) throws IOException
Используется только подклассами.

Создаёт серверный TCP-сокет на порту с использованием контекста аутентификации по умолчанию. По умолчанию в очереди ожидают пятьдесят соединений, после чего система начинает отклонять новые запросы на соединение.

Номер порта 0 создаёт сокет на любом свободном порту.

Параметры:
port — порт, на котором следует ожидать соединения
Выбрасывает:
IOException — если при создании сокета возникает ошибка ввода-вывода
IllegalArgumentException — если значение параметра порта находится за пределами указанного допустимого диапазона от 0 до 65535 включительно.

SSLServerSocket

protected SSLServerSocket(int port, int backlog) throws IOException
Используется только подклассами.

Создаёт серверный TCP-сокет на порту с использованием контекста аутентификации по умолчанию и заданной длины очереди соединений.

Номер порта 0 создаёт сокет на любом свободном порту.

Аргумент backlog задаёт требуемое максимальное число ожидающих соединений в сокете. Его точная семантика зависит от реализации. В частности, реализация может ограничить максимальную длину очереди или полностью игнорировать этот параметр. Указанное значение должно быть больше 0. Если оно меньше или равно 0, будет использовано значение по умолчанию, зависящее от реализации.

Параметры:
port — порт, на котором следует ожидать соединения
backlog — требуемая максимальная длина очереди входящих соединений.
Выбрасывает:
IOException — если при создании сокета возникает ошибка ввода-вывода
IllegalArgumentException — если значение параметра порта находится за пределами указанного допустимого диапазона от 0 до 65535 включительно.

SSLServerSocket

protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException
Используется только подклассами.

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

Номер порта 0 создаёт сокет на любом свободном порту.

Аргумент backlog задаёт требуемое максимальное число ожидающих соединений в сокете. Его точная семантика зависит от реализации. В частности, реализация может ограничить максимальную длину очереди или полностью игнорировать этот параметр. Указанное значение должно быть больше 0. Если оно меньше или равно 0, будет использовано значение по умолчанию, зависящее от реализации.

Если address равен null, по умолчанию соединения будут приниматься по любому или всем локальным адресам.

Параметры:
port — порт, на котором следует ожидать соединения
backlog — требуемая максимальная длина очереди входящих соединений.
address — адрес сетевого интерфейса, через который будут приниматься соединения
Выбрасывает:
IOException — если при создании сокета возникает ошибка ввода-вывода
IllegalArgumentException — если значение параметра порта находится за пределами указанного допустимого диапазона от 0 до 65535 включительно.

Подробное описание методов

getEnabledCipherSuites

public abstract String[] getEnabledCipherSuites()
Возвращает список наборов шифров, которые в данный момент включены для использования вновь принимаемыми соединениями.

Если этот список явно не изменялся, предоставляемое системой значение по умолчанию гарантирует минимальный уровень качества обслуживания для всех включённых наборов шифров.

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

Возвращаемый массив содержит наборы шифров из списка стандартных названий наборов шифров в разделе Названия наборов шифров JSSE спецификации «Стандартные имена алгоритмов безопасности Java»; он также может содержать другие наборы шифров, поддерживаемые поставщиком.

Возвращает:
массив включённых наборов шифров
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • getSupportedCipherSuites()
  • setEnabledCipherSuites(String[])

setEnabledCipherSuites

public abstract void setEnabledCipherSuites(String[] suites)
Задаёт наборы шифров, включённые для использования принимаемыми соединениями.

Наборы шифров должны быть указаны как поддерживаемые методом getSupportedCipherSuites(). После успешного вызова этого метода для использования будут включены только наборы, перечисленные в параметре suites.

Наборы, для которых требуются данные аутентификации, отсутствующие в контексте аутентификации этого ServerSocket, не будут использоваться ни при каких обстоятельствах, даже если они включены.

Стандартный список названий наборов шифров приведён в разделе Названия наборов шифров JSSE спецификации «Стандартные имена алгоритмов безопасности Java». Поставщики могут поддерживать названия наборов шифров, отсутствующие в этом списке, или использовать для определённых наборов шифров названия, отличные от рекомендуемых.

SSLSocketы, возвращённые методом accept(), наследуют эту настройку.

Параметры:
suites — названия всех наборов шифров, которые необходимо включить
Выбрасывает:
IllegalArgumentException — если один или несколько указанных в параметре наборов шифров не поддерживаются или параметр равен null.
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • getSupportedCipherSuites()
  • getEnabledCipherSuites()

getSupportedCipherSuites

public abstract String[] getSupportedCipherSuites()
Возвращает названия наборов шифров, которые можно включить для использования в SSL-соединении.

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

Возвращаемый массив содержит наборы шифров из списка стандартных названий наборов шифров в разделе Названия наборов шифров JSSE спецификации «Стандартные имена алгоритмов безопасности Java»; он также может содержать другие наборы шифров, поддерживаемые поставщиком.

Возвращает:
массив названий наборов шифров
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • getEnabledCipherSuites()
  • setEnabledCipherSuites(String[])

getSupportedProtocols

public abstract String[] getSupportedProtocols()
Возвращает названия протоколов, которые можно включить для использования.
Возвращает:
массив названий поддерживаемых протоколов
См. также:
  • getEnabledProtocols()
  • setEnabledProtocols(String[])

getEnabledProtocols

public abstract String[] getEnabledProtocols()
Возвращает названия протоколов, которые в данный момент включены для использования вновь принимаемыми соединениями.

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

Возвращает:
массив названий протоколов
См. также:
  • getSupportedProtocols()
  • setEnabledProtocols(String[])

setEnabledProtocols

public abstract void setEnabledProtocols(String[] protocols)
Определяет, какие именно протоколы включены для использования принимаемыми соединениями.

Протоколы должны быть указаны как поддерживаемые методом getSupportedProtocols(). После успешного вызова этого метода для использования будут включены только протоколы, перечисленные в параметре protocols.

SSLSocketы, возвращённые методом accept(), наследуют эту настройку.

Параметры:
protocols — названия всех протоколов, которые необходимо включить.
Выбрасывает:
IllegalArgumentException — если один или несколько указанных в параметре протоколов не поддерживаются или параметр protocols равен null.
См. также:
  • getEnabledProtocols()
  • getSupportedProtocols()

setNeedClientAuth

public abstract void setNeedClientAuth(boolean need)
Определяет, будут ли acceptованные SSLSocketsы в серверном режиме изначально настроены на обязательную аутентификацию клиента.

Настройка аутентификации клиента для сокета принимает одно из следующих значений:

  • аутентификация клиента обязательна
  • аутентификация клиента запрошена
  • аутентификация клиента не требуется

В отличие от setWantClientAuth(boolean), если для принятого сокета установлена эта настройка и клиент решит не предоставлять сведения для своей аутентификации, согласование будет прервано, а соединение закрыто.

Вызов этого метода переопределяет любые предыдущие настройки, заданные этим методом или методом setWantClientAuth(boolean).

Исходную унаследованную настройку можно переопределить, вызвав SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Параметры:
need — значение true, если аутентификация клиента обязательна, или false, если аутентификация клиента не требуется.
См. также:
  • getNeedClientAuth()
  • setWantClientAuth(boolean)
  • getWantClientAuth()
  • setUseClientMode(boolean)

getNeedClientAuth

public abstract boolean getNeedClientAuth()
Возвращает true, если аутентификация клиента будет обязательной для вновь acceptованных SSLSocketов в серверном режиме.

Исходную унаследованную настройку можно переопределить, вызвав SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Возвращает:
true, если аутентификация клиента обязательна, или false, если аутентификация клиента не требуется.
См. также:
  • setNeedClientAuth(boolean)
  • setWantClientAuth(boolean)
  • getWantClientAuth()
  • setUseClientMode(boolean)

setWantClientAuth

public abstract void setWantClientAuth(boolean want)
Определяет, будут ли acceptованные SSLSocketsы в серверном режиме изначально настроены на запрос аутентификации клиента.

Настройка аутентификации клиента для сокета принимает одно из следующих значений:

  • аутентификация клиента обязательна
  • аутентификация клиента запрошена
  • аутентификация клиента не требуется

В отличие от setNeedClientAuth(boolean), если для принятого сокета установлена эта настройка и клиент решит не предоставлять сведения для своей аутентификации, согласование продолжится.

Вызов этого метода переопределяет любые предыдущие настройки, заданные этим методом или методом setNeedClientAuth(boolean).

Исходную унаследованную настройку можно переопределить, вызвав SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Параметры:
want — значение true, если аутентификация клиента запрошена, или false, если аутентификация клиента не требуется.
См. также:
  • getWantClientAuth()
  • setNeedClientAuth(boolean)
  • getNeedClientAuth()
  • setUseClientMode(boolean)

getWantClientAuth

public abstract boolean getWantClientAuth()
Возвращает true, если для вновь принимаемых соединений в серверном режиме будет запрошена аутентификация клиента.

Исходную унаследованную настройку можно переопределить, вызвав SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Возвращает:
true, если аутентификация клиента запрошена, или false, если аутентификация клиента не требуется.
См. также:
  • setWantClientAuth(boolean)
  • setNeedClientAuth(boolean)
  • getNeedClientAuth()
  • setUseClientMode(boolean)

setUseClientMode

public abstract void setUseClientMode(boolean mode)
Определяет, будут ли принимаемые соединения работать в режиме сервера SSL (по умолчанию) или в режиме клиента SSL.

Обычно серверы проходят аутентификацию, а клиентам проходить её не требуется.

В редких случаях TCP-серверам необходимо работать в режиме клиента SSL для вновь принимаемых соединений. Например, FTP-клиенты открывают серверные сокеты и ожидают обратных соединений от сервера. FTP-клиент использует SSLServerSocket в режиме «клиента» для приёма обратного соединения, а FTP-сервер использует SSLSocket с отключённым режимом «клиента» для инициирования соединения. Во время последующего рукопожатия можно повторно использовать существующие сеансы SSL.

SSLSocketы, возвращённые методом accept(), наследуют эту настройку.

Параметры:
mode — значение true, если вновь принимаемые соединения должны использовать режим клиента SSL.
См. также:
  • getUseClientMode()

getUseClientMode

public abstract boolean getUseClientMode()
Возвращает true, если принимаемые соединения будут работать в режиме клиента SSL.
Возвращает:
true, если соединение должно использовать режим клиента SSL.
См. также:
  • setUseClientMode(boolean)

setEnableSessionCreation

public abstract void setEnableSessionCreation(boolean flag)
Определяет, могут ли сокеты, создаваемые на основе этого серверного сокета, устанавливать новые сеансы SSL.

SSLSocketы, возвращённые методом accept(), наследуют эту настройку.

Параметры:
flag — значение true означает, что сеансы можно создавать; это значение используется по умолчанию. Значение false означает, что необходимо возобновить существующий сеанс.
См. также:
  • getEnableSessionCreation()

getEnableSessionCreation

public abstract boolean getEnableSessionCreation()
Возвращает true, если сокеты, создаваемые на основе этого серверного сокета, могут устанавливать новые сеансы SSL.
Возвращает:
true означает, что сеансы можно создавать; это значение используется по умолчанию. Значение false означает, что необходимо возобновить существующий сеанс
См. также:
  • setEnableSessionCreation(boolean)

getSSLParameters

public SSLParameters getSSLParameters()
Возвращает SSLParameters, действующие для вновь принимаемых соединений. Наборы шифров и протоколы в возвращаемом объекте SSLParameters всегда не равны null.
Возвращает:
SSLParameters, действующие для вновь принимаемых соединений
С версии:
1.7
См. также:
  • setSSLParameters(SSLParameters)

setSSLParameters

public void setSSLParameters(SSLParameters params)
Применяет SSLParameters к вновь принимаемым соединениям.

Это означает следующее:

  • Если params.getCipherSuites() не равен null, вызывается setEnabledCipherSuites() с этим значением.
  • Если params.getProtocols() не равен null, вызывается setEnabledProtocols() с этим значением.
  • Если params.getNeedClientAuth() или params.getWantClientAuth() возвращают true, вызываются setNeedClientAuth(true) и setWantClientAuth(true) соответственно; в противном случае вызывается setWantClientAuth(false).
  • Если params.getServerNames() не равен null, сокет настроит свои имена сервера с этим значением.
  • Если params.getSNIMatchers() не равен null, сокет настроит свои сопоставители SNI с этим значением.
Параметры:
params — параметры
Выбрасывает:
IllegalArgumentException — если вызов setEnabledCipherSuites() или setEnabledProtocols() завершается неудачно
С версии:
1.7
См. также:
  • getSSLParameters()

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/javax/net/ssl/SSLServerSocket.html

Spec-Zone.ru

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