Spec-Zone.ru › OpenJDK 21

Класс 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)
Управляет тем, будут ли новые серверные сокеты настроенны на требование проверки клиента.
void setSSLParameters(SSLParameters params)
Применяет SSLParameters к новопринятым соединениям.
abstract void setUseClientMode(boolean mode)
Управляет тем, будут ли принятые соединения в режиме SSL-сервера (по умолчанию) или в режиме SSL-клиента.
abstract void setWantClientAuth(boolean want)
Управляет тем, будут ли принятые серверные сокеты настроенны на запрос проверки клиента.

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

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

Методы, объявленные в классе java.lang.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 создает сокет на любом свободном порту.

Если есть менеджер безопасности, его метод checkListen вызывается с аргументом port для проверки разрешения операции. Это может привести к исключению SecurityException.

Параметры:
port - порт, на котором будет осуществляться прослушивание
Исключения:
IOException - если при создании сокета произошла ошибка ввода-вывода
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
IllegalArgumentException - если параметр порта находится вне допустимого диапазона значений портов (от 0 до 65535 включительно).
См. также:
  • SecurityManager.checkListen(int)

SSLServerSocket

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

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

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

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

Если есть менеджер безопасности, его метод checkListen вызывается с аргументом port для проверки разрешения операции. Это может привести к исключению SecurityException.

Параметры:
port - порт, на котором будет осуществляться прослушивание
backlog - запрашиваемая максимальная длина очереди входящих подключений.
Исключения:
IOException - если при создании сокета произошла ошибка ввода-вывода
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
IllegalArgumentException - если параметр порта находится вне допустимого диапазона значений портов (от 0 до 65535 включительно).
См. также:
  • SecurityManager.checkListen(int)

SSLServerSocket

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

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

Если есть менеджер безопасности, его метод checkListen вызывается с аргументом port для проверки разрешения операции. Это может привести к исключению SecurityException.

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

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

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

Параметры:
port - порт, на котором будет осуществляться прослушивание
backlog - запрашиваемая максимальная длина очереди входящих подключений.
address - адрес сетевого интерфейса, через который будут приниматься подключения
Исключения:
IOException - если при создании сокета произошла ошибка ввода-вывода
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
IllegalArgumentException - если параметр порта находится вне допустимого диапазона значений портов (от 0 до 65535 включительно).
См. также:
  • SecurityManager.checkListen(int)

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

getEnabledCipherSuites

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

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

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

Возвращаемый массив включает шифровальные наборы из списка стандартных имён шифровальных наборов в разделе JSSE Cipher Suite Names Спецификации Java Security Standard Algorithm Names, а также может включать другие шифровальные наборы, поддерживаемые провайдером.

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

setEnabledCipherSuites

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

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

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

Обратите внимание, что стандартный список имён шифровальных наборов можно найти в разделе JSSE Cipher Suite Names Спецификации Java Security Standard Algorithm Names. Провайдеры могут поддерживать имена шифровальных наборов, отсутствующие в этом списке, или могут не использовать рекомендуемое имя для определенного шифровального набора.

SSLSocket возвращаемые из accept() наследуют это значение.

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

getSupportedCipherSuites

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

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

Возвращаемый массив включает шифровальные наборы из списка стандартных имён шифровальных наборов в разделе JSSE Cipher Suite Names Спецификации Java Security Standard Algorithm Names, а также может включать другие шифровальные наборы, поддерживаемые провайдером.

Возвращает:
массив имён шифровальных наборов
См. также:
  • 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() наследуют эту настройку.

Parameters:
protocols - Названия всех протоколов, которые необходимо включить.
Throws:
IllegalArgumentException - если один или несколько протоколов, указанных в параметре, не поддерживаются или если параметр protocols равен null.
See Also:
  • getEnabledProtocols()
  • getSupportedProtocols()

setNeedClientAuth

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

Параметр аутентификации клиента сокета может быть следующим:

  • Требуется аутентификация клиента
  • Запрашивается аутентификация клиента
  • Аутентификация клиента не требуется

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

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

Начальная унаследованная настройка может быть переопределена вызовом SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Parameters:
need - устанавливается в true, если требуется аутентификация клиента, или в false, если аутентификация клиента не требуется.
See Also:
  • getNeedClientAuth()
  • setWantClientAuth(boolean)
  • getWantClientAuth()
  • setUseClientMode(boolean)

getNeedClientAuth

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

Начальная унаследованная настройка может быть переопределена вызовом SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Returns:
true, если аутентификация клиента требуется, или false, если аутентификация клиента не требуется.
See Also:
  • setNeedClientAuth(boolean)
  • setWantClientAuth(boolean)
  • getWantClientAuth()
  • setUseClientMode(boolean)

setWantClientAuth

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

Параметр аутентификации клиента сокета может быть следующим:

  • Требуется аутентификация клиента
  • Запрашивается аутентификация клиента
  • Аутентификация клиента не требуется

В отличие от setNeedClientAuth(boolean), если параметр принятого сокета установлен, и клиент не предоставляет информацию об аутентификации, переговоры будут продолжены.

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

Начальная унаследованная настройка может быть переопределена вызовом SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Parameters:
want - устанавливается в true, если требуется запрос аутентификации клиента, или в false, если аутентификация клиента не требуется.
See Also:
  • getWantClientAuth()
  • setNeedClientAuth(boolean)
  • getNeedClientAuth()
  • setUseClientMode(boolean)

getWantClientAuth

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

Начальная унаследованная настройка может быть переопределена вызовом SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).

Returns:
true, если запрос аутентификации клиента требуется, или false, если аутентификация клиента не требуется.
See Also:
  • 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() наследуют эту настройку.

Parameters:
mode - true, если для новых принятых подключений должен использоваться SSL клиентский режим.
See Also:
  • getUseClientMode()

getUseClientMode

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

setEnableSessionCreation

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

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

Parameters:
flag - true означает, что сессии могут быть созданы; это значение по умолчанию. false означает, что необходимо возобновить существующую сессию.
See Also:
  • getEnableSessionCreation()

getEnableSessionCreation

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

getSSLParameters

public SSLParameters getSSLParameters()
Возвращает SSLParameters, действующие для новых принятых подключений. Цифры и протоколы возвращаемых SSLParameters всегда не null.
Returns:
SSLParameters, действующие для новых принятых подключений
Since:
1.7
See Also:
  • 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-соответствия с этим значением.
Parameters:
params - параметры
Throws:
IllegalArgumentException - если вызов setEnabledCipherSuites() или setEnabledProtocols() завершается неудачей
Since:
1.7
See Also:
  • getSSLParameters()

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

Spec-Zone.ru

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