Класс 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
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
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, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, 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, используется значение по умолчанию, зависящее от реализации.
Если адрес равен null, подключение будет приниматься на всех локальных адресах.
- Параметры:
-
port- порт для прослушивания -
backlog- запрашиваемая максимальная длина очереди входящих подключений. -
address- адрес сетевого интерфейса, через который будут приниматься подключения - Исключения:
-
IOException- если при создании сокета произошла ошибка ввода-вывода -
SecurityException- если менеджер безопасности существует и его методcheckListenне разрешает операцию. -
IllegalArgumentException- если параметр порта выходит за допустимый диапазон значений порта, который составляет от 0 до 65535 включительно. - См. также:
SecurityManager.checkListen(int)
Методы
getEnabledCipherSuites
public abstract String[] getEnabledCipherSuites()
Возвращает список наборов шифрования, которые в настоящее время включены для использования при новых подключённых соединениях.
Если этот список не был явно изменён, системное значение по умолчанию гарантирует минимальное качество обслуживания во всех включённых наборах шифрования.
Существуют несколько причин, по которым включённый набор шифрования фактически может не использоваться. Например, у сокета сервера может не быть соответствующих закрытых ключей, или набор шифрования может быть анонимным, исключая возможность аутентификации клиента, в то время как сокет сервера потребовал такую аутентификацию.
- Возвращает:
- массив включенных наборов шифрования
- См. также:
-
getSupportedCipherSuites(),setEnabledCipherSuites(String [])
setEnabledCipherSuites
public abstract void setEnabledCipherSuites(String[] suites)
Устанавливает наборы шифрования, включённые для использования при подключённых соединениях.
Наборы шифрования должны быть указаны в списке getSupportedCipherSuites() как поддерживаемые. После успешного вызова этого метода включены только наборы, указанные в параметре suites.
Наборы, требующие информацию об аутентификации, которая недоступна в контексте аутентификации этого сокета сервера, не будут использоваться ни в коем случае, даже если они включены.
Сокеты, полученные из accept(), унаследуют это значение.
- Параметры:
-
suites- Имена всех наборов шифрования для включения - Исключения:
-
IllegalArgumentException- когда один или несколько шифров, указанных в параметре, не поддерживаются, или когда параметр равен null. - См. также:
-
getSupportedCipherSuites(),getEnabledCipherSuites()
getSupportedCipherSuites
public abstract String[] getSupportedCipherSuites()
Возвращает имена наборов шифрования, которые могут быть включены для использования в соединении SSL.
Обычно только подмножество этих наборов включено по умолчанию, так как этот список может включать наборы шифрования, которые не соответствуют требованиям качества обслуживания по умолчанию. Такие наборы шифрования полезны в специализированных приложениях.
- Возвращает:
- массив имён наборов шифрования
- См. также:
-
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.
Сокеты, полученные из 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-сессии.
SSLSockets возвращенные из accept() наследуют эту настройку.
- Параметры:
-
mode- true, если для вновь подключенных соединений следует использовать режим SSL-клиента. - См. также:
getUseClientMode()
getUseClientMode
public abstract boolean getUseClientMode()
Возвращает true, если принятые соединения будут находиться в режиме SSL-клиента.
- Возвращает:
- true, если соединение должно использовать режим SSL-клиента.
- См. также:
setUseClientMode(boolean)
setEnableSessionCreation
public abstract void setEnableSessionCreation(boolean flag)
Управляет тем, могут ли создаваться новые SSL-сессии сокетами, созданными из этого сокета сервера.
SSLSockets возвращенные из accept() наследуют эту настройку.
- Параметры:
-
flag- true указывает, что сессии могут быть созданы; это значение по умолчанию. false указывает, что существующая сессия должна быть возобновлена. - См. также:
getEnableSessionCreation()
getEnableSessionCreation
public abstract boolean getEnableSessionCreation()
Возвращает true, если новые SSL-сессии могут быть созданы сокетами, созданными из этого сокета сервера.
- Возвращает:
- true указывает, что сессии могут быть созданы; это значение по умолчанию. false указывает, что существующая сессия должна быть возобновлена
- См. также:
setEnableSessionCreation(boolean)
getSSLParameters
public SSLParameters getSSLParameters()
Возвращает SSLParameters, действующие для вновь подключенных соединений. Ciphersuites и протоколы возвращенных SSLParameters всегда не равны null.
- Возвращает:
- SSLParameters, действующие для вновь подключенных соединений
- Since:
- 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() завершится ошибкой - Since:
- 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.