Класс SSLServerSocket
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public abstract class SSLServerSocket extends ServerSocket
ServerSocket и предоставляет защищённые сокеты сервера, использующие протоколы, такие как Secure Sockets Layer (SSL) или Transport Layer Security (TLS). Экземпляры этого класса обычно создаются с помощью SSLServerSocketFactory. Основная функция SSLServerSocket — создание SSLSocket путём установления соединений.
SSLServerSocket содержит несколько данных состояния, которые наследуются созданным SSLSocket при создании сокета. Это включает в себя разрешённые наборы шифров и протоколы, необходима ли проверка подлинности клиента и должен ли созданный сокет начать рукопожатие в режиме клиента или сервера. Состояние, унаследованное созданным SSLSocket, может быть переопределено путём вызова соответствующих методов.
- С тех пор:
- 1.4
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Используется только подклассами. |
|
protected |
Используется только подклассами. |
|
protected |
Используется только подклассами. |
|
protected |
Используется только подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String[] |
getEnabledCipherSuites() |
Возвращает список наборов шифров, которые в настоящее время разрешены для использования вновь принятыми соединениями. |
abstract String[] |
getEnabledProtocols() |
Возвращает имена протоколов, которые в настоящее время разрешены для использования вновь принятыми соединениями. |
abstract boolean |
getEnableSessionCreation() |
Возвращает true, если новые сеансы SSL могут быть созданы сокетами, созданными из этого сокета сервера. |
abstract boolean |
getNeedClientAuth() |
Возвращает true, если проверка подлинности клиента будет требоваться при вновь созданных соединениях серверного режима SSLSocket. |
SSLParameters |
getSSLParameters() |
Возвращает SSLParameters, действующие для вновь принятых соединений. |
abstract String[] |
getSupportedCipherSuites() |
Возвращает имена наборов шифров, которые можно включить для использования в SSL-соединении. |
abstract String[] |
getSupportedProtocols() |
Возвращает имена протоколов, которые можно включить для использования. |
abstract boolean |
getUseClientMode() |
Возвращает true, если принятые соединения будут в режиме SSL клиента. |
abstract boolean |
getWantClientAuth() |
Возвращает true, если проверка подлинности клиента будет запрошена при вновь принятых соединениях серверного режима. |
abstract void |
setEnabledCipherSuites |
Устанавливает наборы шифров, разрешённых для использования принятыми соединениями. |
abstract void |
setEnabledProtocols |
Определяет, какие конкретные протоколы разрешены для использования принятыми соединениями. |
abstract void |
setEnableSessionCreation |
Определяет, могут ли быть созданы новые сеансы SSL сокетами, созданными из этого сокета сервера. |
abstract void |
setNeedClientAuth |
Определяет, будут ли вновь принятые соединения серверного режима изначально настроены на требование проверки подлинности клиента. |
void |
setSSLParameters |
Применяет SSLParameters к вновь принятым соединениям. |
abstract void |
setUseClientMode |
Определяет, будут ли принятые соединения в (по умолчанию) режиме SSL сервера или режиме SSL клиента. |
abstract void |
setWantClientAuth |
Определяет, будут ли вновь принятые соединения серверного режима изначально настроены на запрос проверки подлинности клиента. |
Методы, объявленные в классе 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
Подробное описание конструкторов
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 включительно. - См. также:
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 включительно. - См. также:
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 включительно. - См. также:
Подробное описание методов
getEnabledCipherSuites
public abstract String[] getEnabledCipherSuites()
Если этот список не был явно изменён, система предоставляет по умолчанию, гарантируя минимальное качество обслуживания во всех включённых шифровальных наборах.
Обратите внимание, что даже если набор включён, он может никогда не использоваться. Это может произойти, если у узла нет поддержки, или его использование ограничено, или необходимые сертификаты (и закрытые ключи) для набора недоступны, или анонимный набор включён, но требуется аутентификация.
Возвращаемый массив включает шифровальные наборы из списка стандартных имён шифровальных наборов в разделе JSSE Cipher Suite Names документации по стандартным именам алгоритмов Java Cryptography Architecture и может также включать другие шифровальные наборы, поддерживаемые поставщиком.
- Возвращает:
- массив включённых шифровальных наборов
- См. также:
setEnabledCipherSuites
public abstract void setEnabledCipherSuites(String[] suites)
Шифровальные наборы должны быть перечислены в getSupportedCipherSuites() как поддерживаемые. После успешного вызова этого метода включены только наборы, перечисленные в параметре suites.
Наборы, требующие аутентификационной информации, которая не доступна в контексте аутентификации этого SSLServerSocket, в любом случае не будут использоваться, даже если они включены.
Обратите внимание, что стандартный список имён шифровальных наборов можно найти в разделе JSSE Cipher Suite Names документации по стандартным именам алгоритмов Java Cryptography Architecture. Поставщики могут поддерживать имена шифровальных наборов, не найденные в этом списке, или могут не использовать рекомендуемое имя для определённого шифровального набора.
SSLSocket значения, возвращаемые из accept() наследуют это значение.
- Параметры:
-
suites- имена всех шифровальных наборов для включения - Исключения:
-
IllegalArgumentException- когда один или несколько шифров, указанных в параметре, не поддерживаются или когда параметр равен null. - См. также:
getSupportedCipherSuites
public abstract String[] getSupportedCipherSuites()
Обычно только подмножество этих наборов будет включено по умолчанию, так как этот список может включать шифровальные наборы, которые не соответствуют требованиям качества обслуживания для этих значений по умолчанию. Такие шифровальные наборы полезны в специализированных приложениях.
Возвращаемый массив включает шифровальные наборы из списка стандартных имён шифровальных наборов в разделе JSSE Cipher Suite Names документации по стандартным именам алгоритмов Java Cryptography Architecture и может также включать другие шифровальные наборы, поддерживаемые поставщиком.
- Возвращает:
- массив имён шифровальных наборов
- См. также:
getSupportedProtocols
public abstract String[] getSupportedProtocols()
- Возвращает:
- массив имён поддерживаемых протоколов
- См. также:
getEnabledProtocols
public abstract String[] getEnabledProtocols()
Обратите внимание, что даже если протокол включён, он может никогда не использоваться. Это может произойти, если у узла нет поддержки протокола, или его использование ограничено, или нет включённых шифровальных наборов, поддерживаемых этим протоколом.
- Возвращает:
- массив имён протоколов
- См. также:
setEnabledProtocols
public abstract void setEnabledProtocols(String[] protocols)
Протоколы должны быть перечислены методом getSupportedProtocols() как поддерживаемые. После успешного вызова этого метода, для использования будут включены только протоколы, перечисленные в параметре protocols.
SSLSocket возвращаемые методом accept() наследуют это значение.
- Parameters:
-
protocols- Имена всех протоколов, которые нужно включить. - Throws:
-
IllegalArgumentException- когда один или несколько протоколов, указанных в параметре, не поддерживаются или когда параметр protocols равен null. - See Also:
setNeedClientAuth
public abstract void setNeedClientAuth(boolean need)
accept серверный режим SSLSockets изначально настроен на требование аутентификации клиента. Настройка аутентификации клиента для сокета может быть следующей:
- Требуется аутентификация клиента
- Запрашивается аутентификация клиента
- Аутентификация клиента не требуется
В отличие от setWantClientAuth(boolean), если параметр принятого сокета задан, а клиент отказывается предоставлять информацию об аутентификации, переговоры прекратятся, и подключение будет разорвано.
Вызов этого метода переопределяет любые предыдущие настройки, сделанные этим методом или setWantClientAuth(boolean).
Начальная унаследованная настройка может быть переопределена путем вызова SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).
- Parameters:
-
need- установить в true, если требуется аутентификация клиента, или в false, если аутентификация клиента не требуется. - See Also:
getNeedClientAuth
public abstract boolean getNeedClientAuth()
accept серверного режима SSLSocket. Начальная унаследованная настройка может быть переопределена путем вызова SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).
- Returns:
- true, если аутентификация клиента требуется, или false, если аутентификация клиента не требуется.
- See Also:
setWantClientAuth
public abstract void setWantClientAuth(boolean want)
accept серверный режим SSLSockets изначально настроен на запрос аутентификации клиента. Настройка аутентификации клиента для сокета может быть следующей:
- Требуется аутентификация клиента
- Запрашивается аутентификация клиента
- Аутентификация клиента не требуется
В отличие от setNeedClientAuth(boolean), если параметр принятого сокета задан, а клиент отказывается предоставлять информацию об аутентификации, переговоры продолжатся.
Вызов этого метода переопределяет любые предыдущие настройки, сделанные этим методом или setNeedClientAuth(boolean).
Начальная унаследованная настройка может быть переопределена путем вызова SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).
- Parameters:
-
want- установить в true, если запрашивается аутентификация клиента, или в false, если аутентификация клиента не требуется. - See Also:
getWantClientAuth
public abstract boolean getWantClientAuth()
Начальная унаследованная настройка может быть переопределена путем вызова SSLSocket.setNeedClientAuth(boolean) или SSLSocket.setWantClientAuth(boolean).
- Returns:
- true, если аутентификация клиента запрашивается, или false, если аутентификация клиента не требуется.
- See Also:
setUseClientMode
public abstract void setUseClientMode(boolean mode)
Серверы обычно аутентифицируют себя, а клиенты не обязаны этого делать.
В редких случаях TCP-серверы должны действовать в режиме SSL-клиента при новых принимаемых подключениях. Например, клиенты FTP получают серверные сокеты и слушают их для обратных подключений от сервера. Клиент FTP использовал бы SSLServerSocket в режиме "клиента" для приема обратного подключения, в то время как сервер FTP использовал бы SSLSocket с отключенным режимом "клиента" для инициирования подключения. Во время результирующего рукопожатия могут быть повторно использованы существующие SSL-сессии.
SSLSocket возвращаемые из accept() наследуют эту настройку.
- Parameters:
-
mode- true, если новые принимаемые подключения должны использовать режим SSL-клиента. - See Also:
getUseClientMode
public abstract boolean getUseClientMode()
- Returns:
- true, если подключение должно использовать режим SSL-клиента.
- See Also:
setEnableSessionCreation
public abstract void setEnableSessionCreation(boolean flag)
SSLSocket возвращаемые из accept() наследуют эту настройку.
- Parameters:
-
flag- true означает, что сессии могут быть созданы; это значение по умолчанию. false означает, что необходимо возобновить существующую сессию. - See Also:
getEnableSessionCreation
public abstract boolean getEnableSessionCreation()
- Returns:
- true означает, что сессии могут быть созданы; это значение по умолчанию. false означает, что необходимо возобновить существующую сессию
- See Also:
getSSLParameters
public SSLParameters getSSLParameters()
- Returns:
- SSLParameters, действующие для вновь принятых подключений
- Since:
- 1.7
- See Also:
setSSLParameters
public void setSSLParameters(SSLParameters params)
Это означает:
- Если
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:
© 1993, 2021, 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/17/docs/api/java.base/javax/net/ssl/SSLServerSocket.html