Интерфейс SSLSession
- Все известные реализующие классы:
ExtendedSSLSession
public interface SSLSession
В SSL сессии используются для описания текущих отношений между двумя сущностями. Каждое подключение SSL включает одну сессию за раз, но эта сессия может использоваться во многих подключениях между этими сущностями одновременно или последовательно. Сессия, используемая в подключении, также может быть заменена другой сессией. Сессии создаются или присоединяются как часть протокола рукопожатия SSL. Сессии могут быть аннулированы из-за политик, влияющих на безопасность или использование ресурсов, или приложением, явно вызвав invalidate. Политики управления сессиями обычно используются для настройки производительности.
В дополнение к стандартным атрибутам сессии, сессии SSL предоставляют эти атрибуты только для чтения:
- Идентификатор партнёра. Сессии устанавливаются между конкретным клиентом и конкретным сервером. Идентификатор партнёра может быть установлен в ходе настройки сессии. Партнёры обычно идентифицируются цепочками сертификатов X.509.
- Имя набора шифров. Наборы шифров описывают вид криптографической защиты, используемой подключениями в конкретной сессии.
- Хост партнёра. Все подключения в сессии устанавливаются между теми же двумя хостами. Адрес хоста на другом конце подключения доступен.
Сессии могут быть явно аннулированы. Аннулирование также может выполняться неявно, при возникновении определённых видов ошибок.
- С:
- 1.4
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
int | getApplicationBufferSize() | Возвращает текущий размер максимальных данных приложения, которые ожидаются при использовании этой сессии. |
String | getCipherSuite() | Возвращает имя набора шифров SSL, используемого для всех подключений в сессии. |
long | getCreationTime() | Возвращает время создания данного представления сессии в миллисекундах с полуночи 1 января 1970 года по UTC. |
byte[] | getId() | Возвращает идентификатор, назначенный этой сессии. |
long | getLastAccessedTime() | Возвращает последнее время доступа к данному представлению сессии инфраструктурой уровня сессий в миллисекундах с полуночи 1 января 1970 года по UTC. |
Certificate[] | getLocalCertificates() | Возвращает сертификат(ы), отправленные партнеру во время рукопожатия. |
Principal | getLocalPrincipal() | Возвращает принципал, отправленный партнеру во время рукопожатия. |
int | getPacketBufferSize() | Возвращает текущий размер максимального пакета SSL/TLS/DTLS, который ожидается при использовании этой сессии. |
X509Certificate[] | getPeerCertificateChain() | Устарело. Вместо этого следует использовать метод getPeerCertificates(), возвращающий массив java.security.cert.Certificate. |
Certificate[] | getPeerCertificates() | Возвращает идентификатор партнёра, установленный в процессе определения сессии. |
String | getPeerHost() | Возвращает имя хоста партнёра в этой сессии. |
int | getPeerPort() | Возвращает номер порта партнёра в этой сессии. |
Principal | getPeerPrincipal() | Возвращает идентификатор партнёра, установленный в процессе определения сессии. |
String | getProtocol() | Возвращает стандартное имя протокола, используемого для всех подключений в сессии. |
SSLSessionContext | getSessionContext() | Возвращает контекст, в котором привязана эта сессия. |
Object | getValue(String name) | Возвращает объект, привязанный к заданному имени в данных приложения сессии. |
String[] | getValueNames() | Возвращает массив имён всех объектов данных приложения, привязанных к сессии. |
void | invalidate() | Аннулирует сессию. |
boolean | isValid() | Возвращает, является ли эта сессия валидной и доступной для возобновления или присоединения. |
void | putValue(String name,
Object value) | Привязывает указанный |
void | removeValue(String name) | Удаляет объект, привязанный к заданному имени в данных приложения сессии. |
Методы
getId
byte[] getId()
Возвращает идентификатор, назначенный этому сеансу.
- Возвращает:
- идентификатор сеанса
getSessionContext
SSLSessionContext getSessionContext()
Возвращает контекст, в котором связан этот сеанс.
Этот контекст может быть недоступен в некоторых средах, в этом случае этот метод возвращает null.
Если контекст доступен и установлен менеджер безопасности, вызывающей стороне может потребоваться разрешение на доступ к нему, или может быть брошено исключение безопасности. В среде Java вызывается метод менеджера безопасности checkPermission с разрешением SSLPermission("getSSLSessionContext").
- Возвращает:
- контекст сеанса, используемый для этого сеанса, или null, если контекст недоступен.
- Выбрасывает:
-
SecurityException- если у потока вызова нет разрешения на получение контекста сеанса SSL.
getCreationTime
long getCreationTime()
Возвращает время создания этого представления сеанса в миллисекундах с полуночи 1 января 1970 года по UTC.
- Возвращает:
- время создания сеанса
getLastAccessedTime
long getLastAccessedTime()
Возвращает последнее время доступа к этому представлению сеанса инфраструктурой уровня сеанса в миллисекундах с полуночи 1 января 1970 года по UTC.
Доступ указывает на установление нового подключения с использованием данных сеанса. Операции на уровне приложения, такие как получение или установка значения, связанного с сеансом, не отражаются в этом времени доступа.
Эта информация особенно полезна в политиках управления сеансами. Например, поток менеджера сеансов может покинуть все сеансы в данном контексте, которые не использовались в течение длительного времени; или сеансы могут быть отсортированы по возрасту для оптимизации какой-либо задачи.
- Возвращает:
- последнее время доступа к сеансу
invalidate
void invalidate()
Деактивирует сеанс.
Будущие подключения не смогут возобновить или присоединиться к этому сеансу. Однако любое существующее подключение, использующее этот сеанс, может продолжить использование сеанса до закрытия подключения.
- См. также:
isValid()
isValid
boolean isValid()
Возвращает, является ли этот сеанс действительным и доступным для возобновления или присоединения.
- Возвращает:
- true, если к этому сеансу можно присоединиться.
- С:
- 1.5
- См. также:
invalidate()
putValue
void putValue(String name,
Object value) Связывает указанный объект value в данные приложения сеанса с заданным name.
Любая существующая привязка, использующая то же name, заменяется. Если новый (или существующий) value реализует интерфейс SSLSessionBindingListener, объект, представленный value, уведомляется соответствующим образом.
По соображениям безопасности значения с одинаковыми именами могут быть не видны в разных контекстах управления доступом.
- Параметры:
-
name- имя, к которому будет привязано объект данных. Не должно быть null. -
value- объект данных для привязки. Не должно быть null. - Выбрасывает:
-
IllegalArgumentException- если какой-либо из аргументов равен null.
getValue
Object getValue(String name)
Возвращает объект, привязанный к заданному имени в данных приложения сеанса. Возвращает null, если такой привязки нет.
По соображениям безопасности значения с одинаковыми именами могут быть не видны в разных контекстах управления доступом.
- Параметры:
-
name- имя привязки для поиска. - Возвращает:
- значение, привязанное к этому имени, или null, если привязки не существует.
- Выбрасывает:
-
IllegalArgumentException- если аргумент равен null.
removeValue
void removeValue(String name)
Удаляет объект, привязанный к заданному имени в данных приложения сеанса. Ничего не делает, если объект не привязан к данному имени. Если существующий привязанный объект реализует интерфейс SessionBindingListener, он уведомляется соответствующим образом.
По соображениям безопасности значения с одинаковыми именами могут быть не видны в разных контекстах управления доступом.
- Параметры:
-
name- имя объекта для удаления - Выбрасывает:
-
IllegalArgumentException- если аргумент равен null.
getValueNames
String[] getValueNames()
Возвращает массив имен всех объектов данных приложения, привязанных к сеансу.
По соображениям безопасности значения с одинаковыми именами могут быть не видны в разных контекстах управления доступом.
- Возвращает:
- непустой (возможно, пустой) массив имён объектов, привязанных к сеансу.
getPeerCertificates
Certificate[] getPeerCertificates()
throws SSLPeerUnverifiedException Возвращает идентификатор узла, установленный в процессе определения сеанса.
Примечание: Этот метод может быть использован только при использовании шифровальных наборов на основе сертификатов; при использовании шифровальных наборов без сертификатов, таких как Kerberos, будет брошено исключение SSLPeerUnverifiedException.
Примечание: Возвращаемое значение может не быть корректной цепочкой сертификатов и не должно использоваться для принятия решений о доверии.
- Возвращает:
- упорядоченный массив сертификатов узла, при этом сертификат самого узла стоит первым, а затем сертификаты центров сертификации.
- Выбрасывает:
-
SSLPeerUnverifiedException- если идентичность узла не была проверена - См. также:
getPeerPrincipal()
getLocalCertificates
Certificate[] getLocalCertificates()
Возвращает сертификат(ы), отправленный узлу во время рукопожатия.
Примечание: Этот метод полезен только при использовании шифровальных наборов на основе сертификатов.
Когда для использования в рукопожатии доступно несколько сертификатов, реализация выбирает, что она считает «лучшей» цепочкой сертификатов, доступной, и передает её другой стороне. Этот метод позволяет вызывающей стороне узнать, какая цепочка сертификатов была фактически использована.
- Возвращает:
- упорядоченный массив сертификатов, начиная с локального сертификата и далее, если нужно, с сертификатами центров сертификации. Если не было отправлено никаких сертификатов, возвращается null.
- См. также:
getLocalPrincipal()
getPeerCertificateChain
@Deprecated(since="9")
X509Certificate[] getPeerCertificateChain()
throws SSLPeerUnverifiedException getPeerCertificates(), возвращающий массив java.security.cert.Certificate.Возвращает идентификатор узла, который был идентифицирован при определении сеанса.
Примечание: Этот метод может быть использован только при использовании шифровальных наборов на основе сертификатов; при использовании шифровальных наборов без сертификатов, таких как Kerberos, будет брошено исключение SSLPeerUnverifiedException.
Примечание: Возвращаемое значение может не быть корректной цепочкой сертификатов и не должно использоваться для принятия решений о доверии.
Примечание: этот метод существует для совместимости с предыдущими выпусками. Новые приложения должны использовать getPeerCertificates() вместо него.
- Возвращает:
- упорядоченный массив сертификатов X.509 узла, начиная с сертификата самого узла, а затем сертификатов центров сертификации. (Сертификаты в исходном формате сертификатов JSSE
X509Certificate). - Выбрасывает:
-
SSLPeerUnverifiedException- если идентичность узла не была проверена - См. также:
getPeerPrincipal()
getPeerPrincipal
Principal getPeerPrincipal()
throws SSLPeerUnverifiedException Возвращает идентификатор узла, который был установлен при определении сеанса.
- Возвращает:
- принципал узла. Возвращает X500Principal для сертификата конечного узла в шифровальных наборах на основе X509 и KerberosPrincipal для шифровальных наборов Kerberos.
- Выбрасывает:
-
SSLPeerUnverifiedException- если идентичность узла не была проверена - С:
- 1.5
- См. также:
-
getPeerCertificates(),getLocalPrincipal()
getLocalPrincipal
Principal getLocalPrincipal()
Возвращает принципал, отправленный узлу во время рукопожатия.
- Возвращает:
- принципал, отправленный узлу. Возвращает X500Principal для сертификата конечного узла в шифровальных наборах на основе X509 и KerberosPrincipal для шифровальных наборов Kerberos. Если принципал не был отправлен, то возвращается null.
- С:
- 1.5
- См. также:
-
getLocalCertificates(),getPeerPrincipal()
getCipherSuite
String getCipherSuite()
Возвращает имя шифровального набора SSL, используемого для всех подключений в сеансе.
Это определяет уровень защиты, предоставляемый данным, отправленным по подключению, включая тип используемого шифрования и большинство аспектов выполнения аутентификации.
- Возвращает:
- имя шифровального набора сеанса
getProtocol
String getProtocol()
Возвращает стандартное имя протокола, используемого для всех подключений в сеансе.
Это определяет протокол, используемый в подключении.
- Возвращает:
- стандартное имя протокола, используемого для всех подключений в сеансе.
getPeerHost
String getPeerHost()
Возвращает имя хоста узла в этом сеансе.
Для сервера это имя хоста клиента, а для клиента — сервера. Имя может не быть полностью квалифицированным именем хоста или даже именем хоста вообще, так как оно может представлять собой строковое кодирование сетевого адреса узла. Если такое имя требуется, его можно разрешить через службу имён на основе значения, возвращённого этим методом.
Это значение не аутентифицировано и на него нельзя полагаться. Оно используется в основном как подсказка для SSLSession стратегий кэширования.
- Возвращает:
- имя хоста узла, или null, если информация недоступна.
getPeerPort
int getPeerPort()
Возвращает номер порта узла в этом сеансе.
Для сервера это номер порта клиента, а для клиента — сервера.
Это значение не аутентифицировано и на него нельзя полагаться. Оно используется в основном как подсказка для SSLSession стратегий кэширования.
- Возвращает:
- номер порта узла, или -1, если информация недоступна.
- С:
- 1.5
getPacketBufferSize
int getPacketBufferSize()
Получает текущий размер самого большого пакета SSL/TLS/DTLS, ожидаемого при использовании этой сессии.
Любой процесс, использующий эту сессию, может генерировать пакеты SSL/TLS/DTLS любого размера, не превышающего значение, возвращаемое этим методом. Все буферы сетевых данных должны быть по крайней мере такого размера, чтобы избежать проблем с недостаточным объёмом памяти при выполнении вызовов wrap и unwrap.
- Возвращает:
- текущий максимальный ожидаемый размер сетевого пакета
- С:
- 1.5
- См. также:
-
SSLEngine.wrap(ByteBuffer, ByteBuffer),SSLEngine.unwrap(ByteBuffer, ByteBuffer)
getApplicationBufferSize
int getApplicationBufferSize()
Получает текущий размер самого большого объёма данных приложения, ожидаемого при использовании этой сессии.
Буферы данных приложения должны быть достаточно большими, чтобы вместить данные приложения из любого входящего сетевого пакета данных приложения. Как правило, буферы исходящих данных приложения могут быть любого размера.
- Возвращает:
- текущий максимальный ожидаемый размер пакета данных приложения
- С:
- 1.5
- См. также:
-
SSLEngine.wrap(ByteBuffer, ByteBuffer),SSLEngine.unwrap(ByteBuffer, ByteBuffer)
© 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/SSLSession.html