Spec-Zone.ru › OpenJDK 27

Класс 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 — создавать SSLSockets, 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, если аутентификация клиента будет обязательной для новых accepted серверных SSLSockets.
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)
Управляет тем, будет ли для accepted серверных SSLSockets изначально настроено обязательное требование аутентификации клиента.
void setSSLParameters(SSLParameters params)
Применяет SSLParameters к новым принимаемым соединениям.
abstract void setUseClientMode(boolean mode)
Управляет тем, будут ли принимаемые соединения работать в режиме SSL-сервера (по умолчанию) или SSL-клиента.
abstract void setWantClientAuth(boolean want)
Управляет тем, будет ли для accepted серверных 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
Модификатор и тип Метод Описание
Socket accept()
Ожидает подключения к этому сокету и принимает его.
void bind(SocketAddress endpoint)
Привязывает ServerSocket к указанному адресу (IP-адресу и номеру порта).
void bind(SocketAddress endpoint, int backlog)
Привязывает ServerSocket к указанному адресу (IP-адресу и номеру порта).
void close()
Закрывает этот сокет.
ServerSocketChannel getChannel()
Возвращает связанный с этим сокетом уникальный объект ServerSocketChannel, если он есть.
InetAddress getInetAddress()
Возвращает локальный адрес этого серверного сокета.
int getLocalPort()
Возвращает номер порта, на котором этот сокет ожидает подключений.
SocketAddress getLocalSocketAddress()
Возвращает адрес конечной точки, к которой привязан этот сокет.
<T> T getOption(SocketOption<T> name)
Возвращает значение параметра сокета.
int getReceiveBufferSize()
Возвращает значение параметра SO_RCVBUF для этого ServerSocket, то есть предполагаемый размер буфера, который будет использоваться для сокетов, принимаемых этим ServerSocket.
boolean getReuseAddress()
Проверяет, включён ли параметр SO_REUSEADDR.
int getSoTimeout()
Получает значение параметра SO_TIMEOUT. Возвращаемое значение 0 означает, что параметр отключён (то есть время ожидания не ограничено).
protected final void implAccept(Socket s)
Подклассы ServerSocket используют этот метод, чтобы переопределить accept() и возвращать собственный подкласс сокета.
boolean isBound()
Возвращает состояние привязки ServerSocket.
boolean isClosed()
Возвращает состояние закрытия ServerSocket.
<T> ServerSocket setOption(SocketOption<T> name, T value)
Устанавливает значение параметра сокета.
void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии.
Этот метод предназначался для протоколов, которые теперь устарели.
void setReceiveBufferSize(int size)
Устанавливает предлагаемое значение по умолчанию для параметра SO_RCVBUF у сокетов, принимаемых этим ServerSocket.
void setReuseAddress(boolean on)
Включает или отключает параметр сокета SO_REUSEADDR.
static void setSocketFactory(SocketImplFactory fac)
Устарел.
Используйте ServerSocketFactory и создайте подкласс ServerSocket напрямую.
void setSoTimeout(int timeout)
Включает или отключает SO_TIMEOUT с указанным временем ожидания в миллисекундах.
Set<SocketOption<?>> supportedOptions()
Возвращает набор параметров сокета, поддерживаемых этим серверным сокетом.
String toString()
Возвращает адрес реализации и порт реализации этого сокета в виде String.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного периода реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного периода реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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