public interface SSLSession
javax.net.ssl.SSLSession |
Known Indirect Subclasses |
在SSL中,会话用于描述两个实体之间的持续关系。 每个SSL连接一次涉及一个会话,但该会话可以同时或顺序地在这些实体之间的许多连接上使用。 连接上使用的会话也可以由不同的会话替换。 会话被创建或重新加入,作为SSL握手协议的一部分。 由于影响安全性或资源使用的策略,或由明确调用invalidate
的应用程序导致会话失效。 会话管理策略通常用于调整性能。
除了标准会话属性之外,SSL会话还公开这些只读属性:
会话可能会明确失效。 当遇到某些类型的错误时,失效也可以隐含地完成。
Public methods |
|
---|---|
abstract int |
getApplicationBufferSize() 获取使用此会话时预期的最大应用程序数据的当前大小。 |
abstract String |
getCipherSuite() 返回用于会话中所有连接的SSL密码套件的名称。 |
abstract long |
getCreationTime() 返回创建此会话表示的时间,以毫秒为单位,自UTC 1970年1月1日午夜开始。 |
abstract byte[] |
getId() 返回分配给此会话的标识符。 |
abstract long |
getLastAccessedTime() 返回会话级别基础结构访问会话表示的最后一次时间,以1970年1月1日午夜以来的毫秒为单位。 |
abstract Certificate[] |
getLocalCertificates() 返回握手期间发送给对等体的证书。 |
abstract Principal |
getLocalPrincipal() 返回握手期间发送给对等体的主体。 |
abstract int |
getPacketBufferSize() 获取使用此会话时预期的最大SSL / TLS数据包的当前大小。 |
abstract X509Certificate[] |
getPeerCertificateChain() 返回被确定为定义会话一部分的对等者的身份。 |
abstract Certificate[] |
getPeerCertificates() 返回作为定义会话一部分而建立的对等的身份。 |
abstract String |
getPeerHost() 返回此会话中对等主机的名称。 |
abstract int |
getPeerPort() 返回此会话中的对等端口号。 |
abstract Principal |
getPeerPrincipal() 返回作为定义会话一部分而建立的对等的身份。 |
abstract String |
getProtocol() 返回会话中用于所有连接的协议的标准名称。 |
abstract SSLSessionContext |
getSessionContext() 返回此会话绑定的上下文。 |
abstract Object |
getValue(String name) 返回会话的应用程序层数据中绑定到给定名称的对象。 |
abstract String[] |
getValueNames() 返回绑定到Session中的所有应用程序层数据对象的名称数组。 |
abstract void |
invalidate() 使会话无效。 |
abstract boolean |
isValid() 返回此会话是否有效并可用于恢复或加入。 |
abstract void |
putValue(String name, Object value) 使用给定的 |
abstract void |
removeValue(String name) 删除会话的应用程序层数据中绑定到给定名称的对象。 |
int getApplicationBufferSize ()
获取使用此会话时预期的最大应用程序数据的当前大小。
SSLEngine
应用程序数据缓冲区必须足够大以容纳来自任何接收到的入站网络应用程序数据包的应用程序数据。 通常,出站应用程序数据缓冲区可以是任何大小的。
Returns | |
---|---|
int |
the current maximum expected application packet size |
String getCipherSuite ()
返回用于会话中所有连接的SSL密码套件的名称。
这定义了提供给连接上发送的数据的保护级别,包括使用的加密类型以及如何进行身份验证的大多数方面。
Returns | |
---|---|
String |
the name of the session's cipher suite |
long getCreationTime ()
返回创建此会话表示的时间,以毫秒为单位,自UTC 1970年1月1日午夜开始。
Returns | |
---|---|
long |
the time this Session was created |
long getLastAccessedTime ()
返回会话级别基础结构访问会话表示的最后一次时间,以1970年1月1日午夜以来的毫秒为单位。
访问指示使用会话数据建立的新连接。 应用程序级操作(例如获取或设置与会话相关的值)不会反映在此访问时间中。
这些信息在会话管理策略中特别有用。 例如,会话管理器线程可以在给定的上下文中离开长时间未使用的所有会话; 或者,可以根据年龄对会话进行排序以优化某个任务。
Returns | |
---|---|
long |
the last time this Session was accessed |
Certificate[] getLocalCertificates ()
返回握手期间发送给对等体的证书。
注意:仅当使用基于证书的密码套件时,此方法才有用。
当多个证书可用于握手时,实现选择它认为可用的“最佳”证书链,并将其传递给另一方。 该方法允许调用者知道实际使用哪个证书链。
Returns | |
---|---|
Certificate[] |
an ordered array of certificates, with the local certificate first followed by any certificate authorities. If no certificates were sent, then null is returned. |
也可以看看:
Principal getLocalPrincipal ()
返回握手期间发送给对等体的主体。
Returns | |
---|---|
Principal |
the principal sent to the peer. Returns an X500Principal of the end-entity certificate for X509-based cipher suites, and KerberosPrincipal for Kerberos cipher suites. If no principal was sent, then null is returned. |
int getPacketBufferSize ()
获取使用此会话时预期的最大SSL / TLS数据包的当前大小。
使用此会话的SSLEngine
可能会生成任何大小的SSL / TLS数据包,直至包括此方法返回的值。 所有SSLEngine
网络缓冲区的大小应至少为这个大,以避免执行wrap
和unwrap
调用时的空间不足问题。
Returns | |
---|---|
int |
the current maximum expected network packet size |
X509Certificate[] getPeerCertificateChain ()
返回被确定为定义会话一部分的对等者的身份。
注意:只有在使用基于证书的密码套件时才能使用此方法; 将它与非基于证书的密码套件(如Kerberos)一起使用时,将引发SSLPeerUnverifiedException。
注意:此方法与以前的版本兼容。 新的应用程序应该使用getPeerCertificates()
。
Returns | |
---|---|
X509Certificate[] |
an ordered array of peer X.509 certificates, with the peer's own certificate first followed by any certificate authorities. (The certificates are in the original JSSE certificate X509Certificate format.) |
Throws | |
---|---|
SSLPeerUnverifiedException |
if the peer's identity has not been verified |
也可以看看:
Certificate[] getPeerCertificates ()
返回作为定义会话一部分而建立的对等的身份。
注意:只有在使用基于证书的密码套件时才能使用此方法; 将它与非基于证书的密码套件(如Kerberos)一起使用时,将引发SSLPeerUnverifiedException。
Returns | |
---|---|
Certificate[] |
an ordered array of peer certificates, with the peer's own certificate first followed by any certificate authorities. |
Throws | |
---|---|
SSLPeerUnverifiedException |
if the peer's identity has not been verified |
也可以看看:
String getPeerHost ()
返回此会话中对等主机的名称。
对于服务器,这是客户端的主机; 对于客户端来说,它是服务器的主机。 该名称可能不是完全限定的主机名,甚至可能不是主机名,因为它可能表示对等网络地址的字符串编码。 如果需要这样的名称,则可以通过基于此方法返回的值的名称服务来解决。
该值未经过身份验证,不应被依赖。 它主要用作SSLSession
缓存策略的提示。
Returns | |
---|---|
String |
the host name of the peer host, or null if no information is available. |
int getPeerPort ()
返回此会话中的对等端口号。
对于服务器,这是客户端的端口号; 对于客户端来说,它是服务器的端口号。
该值未经过身份验证,不应被依赖。 它主要用作SSLSession
缓存策略的提示。
Returns | |
---|---|
int |
the port number of the peer host, or -1 if no information is available. |
Principal getPeerPrincipal ()
返回作为定义会话一部分而建立的对等的身份。
Returns | |
---|---|
Principal |
the peer's principal. Returns an X500Principal of the end-entity certiticate for X509-based cipher suites, and KerberosPrincipal for Kerberos cipher suites. |
Throws | |
---|---|
SSLPeerUnverifiedException |
if the peer's identity has not been verified |
String getProtocol ()
返回会话中用于所有连接的协议的标准名称。
这定义了连接中使用的协议。
Returns | |
---|---|
String |
the standard name of the protocol used for all connections in the session. |
SSLSessionContext getSessionContext ()
返回此会话绑定的上下文。
在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。
如果上下文可用并且安装了安全管理器,则调用者可能需要权限才能访问它,否则可能会引发安全异常。 在Java环境中,安全管理器的checkPermission
方法被调用并具有SSLPermission("getSSLSessionContext")
权限。
Returns | |
---|---|
SSLSessionContext |
the session context used for this session, or null if the context is unavailable. |
Throws | |
---|---|
SecurityException |
if the calling thread does not have permission to get SSL session context. |
Object getValue (String name)
返回会话的应用程序层数据中绑定到给定名称的对象。 如果没有这种绑定,则返回null。
出于安全原因,相同的命名值可能在不同的访问控制上下文中不可见。
Parameters | |
---|---|
name |
String : the name of the binding to find. |
Returns | |
---|---|
Object |
the value bound to that name, or null if the binding does not exist. |
Throws | |
---|---|
IllegalArgumentException |
if the argument is null. |
String[] getValueNames ()
返回绑定到Session中的所有应用程序层数据对象的名称数组。
出于安全原因,相同的命名值可能在不同的访问控制上下文中不可见。
Returns | |
---|---|
String[] |
a non-null (possibly empty) array of names of the objects bound to this Session. |
void invalidate ()
使会话无效。
未来的连接将无法恢复或加入此会话。 但是,使用此会话的任何现有连接都可以继续使用会话,直到连接关闭。
也可以看看:
boolean isValid ()
返回此会话是否有效并可用于恢复或加入。
Returns | |
---|---|
boolean |
true if this session may be rejoined. |
也可以看看:
void putValue (String name, Object value)
将指定的 value
对象与给定的 name
绑定到会话的应用程序层数据中。
任何使用相同的name
现有绑定都将被替换。 如果新(或现有) value
实现了SSLSessionBindingListener
接口,则适当地通知由value
表示的对象。
出于安全原因,相同的命名值可能在不同的访问控制上下文中不可见。
Parameters | |
---|---|
name |
String : the name to which the data object will be bound. This may not be null. |
value |
Object : the data object to be bound. This may not be null. |
Throws | |
---|---|
IllegalArgumentException |
if either argument is null. |
void removeValue (String name)
删除会话的应用程序层数据中绑定到给定名称的对象。 如果没有绑定到给定名称的对象,则什么也不做。 如果绑定的现有对象实现了SessionBindingListener
接口,它会得到适当的通知。
出于安全原因,相同的命名值可能在不同的访问控制上下文中不可见。
Parameters | |
---|---|
name |
String : the name of the object to remove visible across different access control contexts |
Throws | |
---|---|
IllegalArgumentException |
if the argument is null. |