-
- 所有已知实现类:
-
ExtendedSSLSession
public interface SSLSession
在SSL中,会话用于描述两个实体之间的持续关系。 每个SSL连接一次涉及一个会话,但该会话可以同时或顺序地用于这些实体之间的许多连接。 连接上使用的会话也可以由不同的会话替换。 作为SSL握手协议的一部分,会话被创建或重新加入。 由于影响安全性或资源使用的策略,或者显式调用invalidate
的应用程序,会话可能会失效。 会话管理策略通常用于调整性能。除标准会话属性外,SSL会话还公开这些只读属性:
- 同伴身份。 会话位于特定客户端和特定服务器之间。 可以将对等体的身份建立为会话设置的一部分。 对等方通常由X.509证书链标识。
- 密码套件名称。 密码套件描述了特定会话中连接使用的加密保护类型。
- 同伴主持人。 会话中的所有连接都在同一个主机之间。 可以使用连接另一端的主机地址。
会话可能会明确无效。 当遇到某些类型的错误时,也可以隐式地进行失效。
- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 实例方法 抽象方法 弃用的方法 变量和类型 方法 描述 int
getApplicationBufferSize()
获取使用此会话时预期的最大应用程序数据的当前大小。String
getCipherSuite()
返回SSL密码套件的名称,该密码套件用于会话中的所有连接。long
getCreationTime()
返回创建此会话表示的时间,以UTC时间1970年1月1日午夜以来的毫秒数为单位。byte[]
getId()
返回分配给此Session的标识符。long
getLastAccessedTime()
返回会话级基础结构访问此会话表示的最后时间,自UTC时间1970年1月1日午夜起的毫秒数。Certificate[]
getLocalCertificates()
返回握手期间发送给对等方的证书。Principal
getLocalPrincipal()
返回握手期间发送给对等方的主体。int
getPacketBufferSize()
获取使用此会话时预期的最大SSL / TLS / DTLS数据包的当前大小。X509Certificate[]
getPeerCertificateChain()
已过时。应该使用返回java.security.cert.Certificate
数组的getPeerCertificates()
方法。Certificate[]
getPeerCertificates()
返回作为定义会话的一部分而建立的对等方的标识。String
getPeerHost()
返回此会话中对等方的主机名。int
getPeerPort()
返回此会话中对等方的端口号。Principal
getPeerPrincipal()
返回作为定义会话的一部分而建立的对等方的标识。String
getProtocol()
返回用于会话中所有连接的协议的标准名称。SSLSessionContext
getSessionContext()
返回绑定此会话的上下文。Object
getValue(String name)
返回绑定到会话的应用程序层数据中给定名称的对象。String[]
getValueNames()
返回绑定到Session中的所有应用程序层数据对象的名称数组。void
invalidate()
使会话无效。boolean
isValid()
返回此会话是否有效并可用于恢复或加入。void
putValue(String name, Object value)
使用给定的name
将指定的value
对象绑定到会话的应用程序层数据中。void
removeValue(String name)
删除会话的应用程序层数据中绑定到给定名称的对象。
-
-
-
方法详细信息
-
getId
byte[] getId()
返回分配给此Session的标识符。- 结果
- 会话标识符
-
getSessionContext
SSLSessionContext getSessionContext()
返回绑定此会话的上下文。在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。
如果上下文可用且安装了安全管理器,则调用者可能需要访问权限,否则可能会引发安全性异常。 在Java环境中,使用
SSLPermission("getSSLSessionContext")
权限调用安全管理器的checkPermission
方法。- 结果
- 用于此会话的会话上下文,如果上下文不可用,则为null。
- 异常
-
SecurityException
- 如果调用线程没有获取SSL会话上下文的权限。
-
getCreationTime
long getCreationTime()
返回创建此会话表示的时间,以UTC时间1970年1月1日午夜以来的毫秒数为单位。- 结果
- 本次会议的创建时间
-
getLastAccessedTime
long getLastAccessedTime()
返回会话级基础结构访问此会话表示的最后时间,自UTC时间1970年1月1日午夜起的毫秒数。Access表示使用会话数据建立的新连接。 应用程序级别操作(例如获取或设置与会话关联的值)不会反映在此访问时间中。
此信息在会话管理策略中特别有用。 例如,会话管理器线程可以将所有会话留在给定的上下文中,这些会话在很长一段时间内没有被使用过; 或者,可以根据年龄对会话进行排序以优化某些任务。
- 结果
- 访问本次会议的最后一次
-
invalidate
void invalidate()
使会话无效。未来的连接将无法恢复或加入此会话。 但是,使用此会话的任何现有连接都可以继续使用该会话,直到连接关闭。
- 另请参见:
-
isValid()
-
isValid
boolean isValid()
返回此会话是否有效并可用于恢复或加入。- 结果
- 如果此会话可能重新加入,则为true。
- 从以下版本开始:
- 1.5
- 另请参见:
-
invalidate()
-
putValue
void putValue(String name, Object value)
使用给定的name
将指定的value
对象绑定到会话的应用程序层数据中。使用相同的
name
任何现有绑定都将被替换。 如果新(或现有)value
实现SSLSessionBindingListener
接口,value
通知由value
表示的对象。出于安全原因,在不同的访问控制上下文中可能看不到相同的命名值。
- 参数
-
name
- 数据对象将绑定到的名称。 这可能不是空的。 -
value
- 要绑定的数据对象。 这可能不是空的。 - 异常
-
IllegalArgumentException
- 如果任一参数为null。
-
getValue
Object getValue(String name)
返回绑定到会话的应用程序层数据中给定名称的对象。 如果没有这样的绑定,则返回null。出于安全原因,在不同的访问控制上下文中可能看不到相同的命名值。
- 参数
-
name
- 要查找的绑定的名称。 - 结果
- 绑定到该名称的值,如果绑定不存在,则返回null。
- 异常
-
IllegalArgumentException
- 如果参数为null。
-
removeValue
void removeValue(String name)
删除会话的应用程序层数据中绑定到给定名称的对象。 如果没有绑定到给定名称的对象,则不执行任何操作。 如果绑定的现有对象实现SessionBindingListener
接口,则会相应地通知它。出于安全原因,在不同的访问控制上下文中可能看不到相同的命名值。
- 参数
-
name
- 要在不同的访问控制上下文中删除的对象的名称 - 异常
-
IllegalArgumentException
- 如果参数为null。
-
getValueNames
String[] getValueNames()
返回绑定到Session中的所有应用程序层数据对象的名称数组。出于安全原因,在不同的访问控制上下文中可能看不到相同的命名值。
- 结果
- 绑定到此Session的对象的非null(可能为空)数组。
-
getPeerCertificates
Certificate[] getPeerCertificates() throws SSLPeerUnverifiedException
返回作为定义会话的一部分而建立的对等方的标识。注意:此方法仅在使用基于证书的密码套件时使用; 将它与非基于证书的密码套件(如Kerberos)一起使用会抛出SSLPeerUnverifiedException。
注意:返回的值可能不是有效的证书链,因此不应依赖于信任决策。
- 结果
- 一个有序的对等证书数组,首先是对等方自己的证书,然后是任何证书颁发机构。
- 异常
-
SSLPeerUnverifiedException
- 如果未验证对等方的身份 - 另请参见:
-
getPeerPrincipal()
-
getLocalCertificates
Certificate[] getLocalCertificates()
返回握手期间发送给对等方的证书。注意:此方法仅在使用基于证书的密码套件时才有用。
当多个证书可用于握手时,实现选择它认为可用的“最佳”证书链,并将其传输到另一方。 此方法允许调用者知道实际使用的证书链。
- 结果
- 一个有序的证书数组,首先是本地证书,然后是任何证书颁发机构。 如果未发送证书,则返回null。
- 另请参见:
-
getLocalPrincipal()
-
getPeerCertificateChain
@Deprecated(since="9")X509Certificate[] getPeerCertificateChain() throws SSLPeerUnverifiedException
Deprecated.ThegetPeerCertificates()
method that returns an array ofjava.security.cert.Certificate
should be used instead.返回标识为定义会话一部分的对等方的标识。注意:此方法仅在使用基于证书的密码套件时使用; 将它与非基于证书的密码套件(如Kerberos)一起使用会抛出SSLPeerUnverifiedException。
注意:返回的值可能不是有效的证书链,因此不应依赖于信任决策。
注意:此方法的存在是为了与先前版本兼容。 新应用程序应使用
getPeerCertificates()
。- 结果
- 一个有序的对等X.509证书数组,首先是对等方自己的证书,然后是任何证书颁发机构。 (证书采用原始JSSE证书
X509Certificate
格式。) - 异常
-
SSLPeerUnverifiedException
- 如果未验证对等方的身份 - 另请参见:
-
getPeerPrincipal()
-
getPeerPrincipal
Principal getPeerPrincipal() throws SSLPeerUnverifiedException
返回作为定义会话的一部分而建立的对等方的标识。- 结果
- 同行的校长。 返回基于X509的密码套件的终端实体certiticate的X500Principal,以及Kerberos密码套件的KerberosPrincipal。
- 异常
-
SSLPeerUnverifiedException
- 如果未验证对等方的身份 - 从以下版本开始:
- 1.5
- 另请参见:
-
getPeerCertificates()
,getLocalPrincipal()
-
getLocalPrincipal
Principal getLocalPrincipal()
返回握手期间发送给对等方的主体。- 结果
- 校长寄给同伴。 返回基于X509的密码套件的终端实体证书的X500Principal,以及Kerberos密码套件的KerberosPrincipal。 如果没有发送主体,则返回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数据包的当前大小。使用此会话的
SSLEngine
可以生成任何大小的SSL / TLS / DTLS数据包,包括此方法返回的值。 所有SSLEngine
网络缓冲区的大小应至少为此大,以避免在执行wrap
和unwrap
调用时出现空间不足问题。- 结果
- 当前最大预期网络数据包大小
- 从以下版本开始:
- 1.5
- 另请参见:
-
SSLEngine.wrap(ByteBuffer, ByteBuffer)
,SSLEngine.unwrap(ByteBuffer, ByteBuffer)
-
getApplicationBufferSize
int getApplicationBufferSize()
获取使用此会话时预期的最大应用程序数据的当前大小。SSLEngine
应用程序数据缓冲区必须足够大,以容纳来自任何收到的入站网络应用程序数据包的应用程序数据。 通常,出站应用程序数据缓冲区可以是任何大小。- 结果
- 当前最大预期应用程序包大小
- 从以下版本开始:
- 1.5
- 另请参见:
-
SSLEngine.wrap(ByteBuffer, ByteBuffer)
,SSLEngine.unwrap(ByteBuffer, ByteBuffer)
-
-