Класс 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 путём установления соединений.
SSLServerSocket содержит несколько данных состояния, которые наследуются создаваемым SSLSocket при создании сокета. К ним относятся включенные наборы шифров и протоколов, требуется ли проверка подлинности клиента и должны ли созданные сокеты начинать рукопожатие в режиме клиента или сервера. Состояние, унаследованное созданным SSLSocket, может быть переопределено вызовом соответствующих методов.
- С момента:
- 1.4
- См. также:
-
ServerSocket,SSLSocket
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | SSLServerSocket() | Используется только подклассами. |
protected | SSLServerSocket(int port) | Используется только подклассами. |
protected | SSLServerSocket(int port,
int backlog) | Используется только подклассами. |
protected | SSLServerSocket(int port,
int backlog,
InetAddress address) | Используется только подклассами. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String[] | getEnabledCipherSuites() | Возвращает список наборов шифров, которые в настоящее время разрешены для использования вновь принятыми соединениями. |
abstract String[] | getEnabledProtocols() | Возвращает имена протоколов, которые в настоящее время разрешены для использования вновь принятыми соединениями. |
abstract boolean | getEnableSessionCreation() | Возвращает true, если новые сессии SSL могут быть созданы сокетами, созданными из этого сокета сервера. |
abstract boolean | getNeedClientAuth() | Возвращает true, если проверка подлинности клиента будет требоваться для вновь принятых соединений сервера. |
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()
Возвращает список наборов шифрования, которые в настоящее время включены для использования новыми принимаемыми соединениями.
Если этот список не был явно изменен, системный предоставленный по умолчанию гарантирует минимальное качество обслуживания во всех включенных наборах шифрования.
Обратите внимание, что даже если набор включен, он может никогда не использоваться. Это может произойти, если peer не поддерживает его, или его использование ограничено, или необходимые сертификаты (и закрытые ключи) для набора недоступны, или анонимный набор включен, но требуется аутентификация.
Возвращаемый массив включает наборы шифрования из списка стандартных имен наборов шифрования в разделе Имена наборов шифрования JSSE документации по стандартным именам алгоритмов Java Cryptography Architecture и может также включать другие наборы шифрования, которые поддерживает поставщик.
- Возвращает:
- массив включенных наборов шифрования
- См. также:
-
getSupportedCipherSuites(),setEnabledCipherSuites(String [])
setEnabledCipherSuites
public abstract void setEnabledCipherSuites(String[] suites)
Устанавливает наборы шифрования, включенные для использования принимаемыми соединениями.
Наборы шифрования должны быть перечислены в getSupportedCipherSuites() как поддерживаемые. После успешного вызова этого метода только наборы, перечисленные в параметре suites, включены для использования.
Наборы, которые требуют информации об аутентификации, которая недоступна в контексте аутентификации этого ServerSocket, не будут использоваться ни в каком случае, даже если они включены.
Обратите внимание, что стандартный список имен наборов шифрования можно найти в разделе Имена наборов шифрования JSSE документации по стандартным именам алгоритмов Java Cryptography Architecture. Поставщики могут поддерживать имена наборов шифрования, которых нет в этом списке, или могут не использовать рекомендованное имя для определенного набора шифрования.
SSLSocket возвращаемые значения из accept() наследуют это значение.
- Параметры:
-
suites- Имена всех наборов шифрования, которые нужно включить - Имеет исключения:
-
IllegalArgumentException- когда один или несколько шифров, названных в параметре, не поддерживаются или когда параметр равен null. - См. также:
-
getSupportedCipherSuites(),getEnabledCipherSuites()
getSupportedCipherSuites
public abstract String[] getSupportedCipherSuites()
Возвращает имена наборов шифрования, которые могут быть включены для использования в SSL-соединении.
Обычно только подмножество из них фактически будет включено по умолчанию, поскольку этот список может включать наборы шифрования, которые не соответствуют требованиям качества обслуживания для этих значений по умолчанию. Такие наборы шифрования полезны в специализированных приложениях.
Возвращаемый массив включает наборы шифрования из списка стандартных имен наборов шифрования в разделе Имена наборов шифрования JSSE документации по стандартным именам алгоритмов Java Cryptography Architecture и может также включать другие наборы шифрования, которые поддерживает поставщик.
- Возвращает:
- массив имен наборов шифрования
- См. также:
-
getEnabledCipherSuites(),setEnabledCipherSuites(String [])
getSupportedProtocols
public abstract String[] getSupportedProtocols()
Возвращает имена протоколов, которые могут быть включены для использования.
- Возвращает:
- массив поддерживаемых имен протоколов
- См. также:
-
getEnabledProtocols(),setEnabledProtocols(String [])
getEnabledProtocols
public abstract String[] getEnabledProtocols()
Возвращает имена протоколов, которые в настоящее время включены для использования новыми принимаемыми соединениями.
Обратите внимание, что даже если протокол включен, он может никогда не использоваться. Это может произойти, если peer не поддерживает протокол, или его использование ограничено, или нет включенных наборов шифрования, поддерживаемых протоколом.
- Возвращает:
- массив имен протоколов
- См. также:
-
getSupportedProtocols(),setEnabledProtocols(String [])
setEnabledProtocols
public abstract void setEnabledProtocols(String[] protocols)
Управляет тем, какие протоколы включены для использования принимаемыми соединениями.
Протоколы должны быть перечислены в getSupportedProtocols() как поддерживаемые. После успешного вызова этого метода только протоколы, перечисленные в параметре protocols, включены для использования.
SSLSocket возвращаемые из accept() наследуют это значение.
- Параметры:
-
protocols- Имена всех протоколов для включения. - Имеет исключения:
-
IllegalArgumentException- когда один или несколько протоколов, названных в параметре, не поддерживаются или когда параметр протоколов равен 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()
© 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/SSLServerSocket.html