- 所有已知的实现类:
-
ExtendedSSLSession
invalidate
来使其无效。会话管理策略通常用于调整性能。
除了标准会话属性外,SSL会话还公开这些只读属性:
- 对等身份。 会话是在特定客户端和特定服务器之间的。对等方的身份可能已经在会话设置的过程中建立。通常通过X.509证书链来识别对等方。
- 密码套件名称。 密码套件描述了在特定会话中连接所使用的加密保护类型。
- 对等主机。 会话中的所有连接都是在相同的两个主机之间的。可以获取连接另一侧主机的地址。
会话可以被显式地使无效。当面临某些类型的错误时,也可以隐式地进行使无效。
- 自版本:
- 1.4
-
Method Summary
Modifier and TypeMethodDescriptionint
获取在使用此会话时预期的最大应用数据大小。返回用于会话中所有连接的SSL密码套件的名称。long
返回创建此会话表示的时间,自1970年1月1日UTC午夜以来的毫秒数。byte[]
getId()
返回分配给此会话的标识符。long
返回会话级基础设施最后访问此会话表示的时间,自1970年1月1日UTC午夜以来的毫秒数。返回在握手期间发送给对等方的证书。返回在握手期间发送给对等方的主体。int
获取在使用此会话时预期的最大SSL/TLS/DTLS数据包大小。default X509Certificate[]
已弃用,将来会移除: 该API元素可能在将来的版本中被移除。返回作为定义会话的一部分建立的对等方的身份。返回此会话中对等方的主机名。int
返回此会话中对等方的端口号。返回作为定义会话的一部分建立的对等方的身份。返回会话中所有连接使用的协议的标准名称。返回此会话绑定的上下文。返回绑定到会话应用层数据中给定名称的对象。String[]
返回绑定到会话中的所有应用层数据对象的名称数组。void
使会话无效。boolean
isValid()
返回此会话是否有效且可用于恢复或加入。void
将指定的value
对象绑定到会话的应用层数据中,使用给定的name
。void
removeValue
(String name) 删除绑定到会话的应用层数据中给定名称的对象。
-
Method Details
-
getId
byte[] getId()返回分配给此会话的标识符。- 返回:
- 会话标识符
-
getSessionContext
SSLSessionContext getSessionContext()返回此会话绑定的上下文。在某些环境中,此上下文可能不可用,此时该方法返回null。
如果上下文可用且安装了安全管理器,则调用方可能需要权限才能访问它,或者可能会抛出安全异常。在Java环境中,将使用安全管理器的
checkPermission
方法,使用SSLPermission("getSSLSessionContext")
权限。- 返回:
- 用于此会话的会话上下文,如果上下文不可用则返回null。
- 抛出:
-
SecurityException
- 如果调用线程没有权限获取SSL会话上下文。
-
getCreationTime
long getCreationTime()返回此会话表示的创建时间,自1970年1月1日UTC午夜以来的毫秒数。- 返回:
- 此会话创建的时间
-
getLastAccessedTime
long getLastAccessedTime()返回会话级基础设施最后访问此会话表示的时间,自1970年1月1日UTC午夜以来的毫秒数。访问表示使用会话数据建立新连接。应用程序级操作,如获取或设置与会话关联的值,不会反映在此访问时间中。
此信息在会话管理策略中特别有用。例如,会话管理器线程可以保留在给定上下文中长时间未使用的所有会话;或者,会话可以根据年龄排序以优化某些任务。
- 返回:
- 此会话最后访问的时间
-
invalidate
void invalidate()使会话无效。未来的连接将无法恢复或加入此会话。但是,任何使用此会话的现有连接可以继续使用该会话,直到连接关闭。
- 参见:
-
isValid
boolean isValid()返回此会话是否有效且可用于恢复或加入。- 返回:
- 如果此会话可以重新加入,则为true。
- 自版本:
- 1.5
- 参见:
-
putValue
将指定的value
对象绑定到会话的应用层数据中,使用给定的name
。任何使用相同
name
的现有绑定将被替换。如果新的(或现有的)value
实现了SSLSessionBindingListener
接口,则将适当地通知value
所代表的对象。出于安全原因,相同名称的值可能不会在不同的访问控制上下文中可见。
- 参数:
-
name
- 将绑定数据对象的名称。此名称不能为空。 -
value
- 要绑定的数据对象。此值不能为空。 - 抛出:
-
IllegalArgumentException
- 如果任一参数为null。
-
getValue
返回绑定到会话的应用层数据中给定名称的对象。如果没有这样的绑定,则返回null。出于安全原因,相同名称的值可能不会在不同的访问控制上下文中可见。
- 参数:
-
name
- 要查找绑定的名称。 - 返回:
- 绑定到该名称的值,如果绑定不存在则返回null。
- 抛出:
-
IllegalArgumentException
- 如果参数为null。
-
removeValue
删除绑定到会话的应用层数据中给定名称的对象。如果没有绑定到给定名称的对象,则不执行任何操作。如果绑定的现有对象实现了SSLSessionBindingListener
接口,则会适当地通知它。出于安全原因,相同名称的值可能不会在不同的访问控制上下文中可见。
- 参数:
-
name
- 要删除的对象的名称,可见于不同的访问控制上下文。 - 抛出:
-
IllegalArgumentException
- 如果参数为null。
-
getValueNames
String[] getValueNames()返回绑定到会话中的所有应用层数据对象的名称数组。出于安全原因,相同名称的值可能不会在不同的访问控制上下文中可见。
- 返回:
- 一个非空(可能为空)的名称数组,表示绑定到此会话的对象的名称。
-
getPeerCertificates
返回作为定义会话的一部分建立的对等方的身份。注意: 仅在使用基于证书的密码套件时才能使用此方法;在使用非基于证书的密码套件(如Kerberos)时使用它将引发SSLPeerUnverifiedException。
注意: 返回的值可能不是有效的证书链,不应依赖于其进行信任决策。
- 返回:
- 一个有序的对等方证书数组,对等方自己的证书在前,然后是任何证书颁发机构的证书。
- 抛出:
-
SSLPeerUnverifiedException
- 如果对等方的身份未经验证 - 参见:
-
getLocalCertificates
Certificate[] getLocalCertificates()返回在握手期间发送给对等方的证书。注意: 仅在使用基于证书的密码套件时才有用此方法。
当握手可用于多个证书时,实现会选择其认为可用的“最佳”证书链,并将其传输到另一侧。此方法允许调用方了解实际使用的证书链。
- 返回:
- 一个有序的证书数组,本地证书在前,然后是任何证书颁发机构的证书。如果未发送任何证书,则返回null。
- 参见:
-
getPeerCertificateChain
@Deprecated(since="9", forRemoval=true) default X509Certificate[] getPeerCertificateChain() throws SSLPeerUnverifiedExceptionDeprecated, for removal: This API element is subject to removal in a future version.ThegetPeerCertificates()
method that returns an array ofjava.security.cert.Certificate
should be used instead.返回作为定义会话一部分而被识别的对等体的标识。注意:仅在使用基于证书的密码套件时才能使用此方法;如果在非基于证书的密码套件(如Kerberos)中使用它,将抛出SSLPeerUnverifiedException异常。
注意:返回的值可能不是有效的证书链,不应依赖于其进行信任决策。
注意:此方法存在是为了与之前的版本兼容。新应用程序应改用
getPeerCertificates()
。- 实现要求:
- 此默认实现会抛出UnsupportedOperationException异常。
- 返回:
-
一个有序的对等体X.509证书数组,对等体自己的证书排在第一位,然后是任何证书颁发机构的证书。(证书以原始JSSE证书
X509Certificate
格式呈现。) - 抛出:
-
SSLPeerUnverifiedException
- 如果未验证对等体的标识。 -
UnsupportedOperationException
- 如果底层提供程序未实现该操作。 - 参见:
-
getPeerPrincipal
返回作为定义会话一部分而建立的对等体的标识。- 返回:
- 对等体的主体。对于基于X509的密码套件,返回X500Principal的终端实体证书,对于Kerberos密码套件,返回KerberosPrincipal。
- 抛出:
-
SSLPeerUnverifiedException
- 如果未验证对等体的标识 - 自:
- 1.5
- 参见:
-
getLocalPrincipal
Principal getLocalPrincipal()返回在握手期间发送给对等体的主体。- 返回:
- 发送给对等体的主体。对于基于X509的密码套件,返回X500Principal的终端实体证书,对于Kerberos密码套件,返回KerberosPrincipal。如果未发送主体,则返回null。
- 自:
- 1.5
- 参见:
-
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数据包的当前大小。使用此会话的
SSLEngine
可能生成任何大小的SSL/TLS/DTLS数据包,直到并包括此方法返回的值。所有SSLEngine
网络缓冲区应至少具有此大小,以避免在执行wrap
和unwrap
调用时出现空间不足问题。- 返回:
- 当前最大预期网络数据包大小
- 自:
- 1.5
- 参见:
-
getApplicationBufferSize
int getApplicationBufferSize()获取在使用此会话时预期的最大应用数据的当前大小。SSLEngine
应用数据缓冲区必须足够大,以容纳接收到的任何入站网络应用数据包的应用数据。通常,出站应用数据缓冲区可以是任何大小。- 返回:
- 当前最大预期应用程序数据包大小
- 自:
- 1.5
- 参见:
-
java.security.cert.Certificate
数组的getPeerCertificates()
方法。