Most visited

Recently visited

Added in API level 1

SSLSession

public interface SSLSession

javax.net.ssl.SSLSession
Known Indirect Subclasses


在SSL中,会话用于描述两个实体之间的持续关系。 每个SSL连接一次涉及一个会话,但该会话可以同时或顺序地在这些实体之间的许多连接上使用。 连接上使用的会话也可以由不同的会话替换。 会话被创建或重新加入,作为SSL握手协议的一部分。 由于影响安全性或资源使用的策略,或由明确调用invalidate的应用程序导致会话失效。 会话管理策略通常用于调整性能。

除了标准会话属性之外,SSL会话还公开这些只读属性:

会话可能会明确失效。 当遇到某些类型的错误时,失效也可以隐含地完成。

Summary

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)

使用给定的 name将指定的 value对象绑定到会话的应用程序层数据中。

abstract void removeValue(String name)

删除会话的应用程序层数据中绑定到给定名称的对象。

Public methods

getApplicationBufferSize

Added in API level 1
int getApplicationBufferSize ()

获取使用此会话时预期的最大应用程序数据的当前大小。

SSLEngine应用程序数据缓冲区必须足够大以容纳来自任何接收到的入站网络应用程序数据包的应用程序数据。 通常,出站应用程序数据缓冲区可以是任何大小的。

Returns
int the current maximum expected application packet size

也可以看看:

getCipherSuite

Added in API level 1
String getCipherSuite ()

返回用于会话中所有连接的SSL密码套件的名称。

这定义了提供给连接上发送的数据的保护级别,包括使用的加密类型以及如何进行身份验证的大多数方面。

Returns
String the name of the session's cipher suite

getCreationTime

Added in API level 1
long getCreationTime ()

返回创建此会话表示的时间,以毫秒为单位,自UTC 1970年1月1日午夜开始。

Returns
long the time this Session was created

getId

Added in API level 1
byte[] getId ()

返回分配给此会话的标识符。

Returns
byte[] the Session identifier

getLastAccessedTime

Added in API level 1
long getLastAccessedTime ()

返回会话级别基础结构访问会话表示的最后一次时间,以1970年1月1日午夜以来的毫秒为单位。

访问指示使用会话数据建立的新连接。 应用程序级操作(例如获取或设置与会话相关的值)不会反映在此访问时间中。

这些信息在会话管理策略中特别有用。 例如,会话管理器线程可以在给定的上下文中离开长时间未使用的所有会话; 或者,可以根据年龄对会话进行排序以优化某个任务。

Returns
long the last time this Session was accessed

getLocalCertificates

Added in API level 1
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.

也可以看看:

getLocalPrincipal

Added in API level 1
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.

也可以看看:

getPacketBufferSize

Added in API level 1
int getPacketBufferSize ()

获取使用此会话时预期的最大SSL / TLS数据包的当前大小。

使用此会话的SSLEngine可能会生成任何大小的SSL / TLS数据包,直至包括此方法返回的值。 所有SSLEngine网络缓冲区的大小应至少为这个大,以避免执行wrapunwrap调用时的空间不足问题。

Returns
int the current maximum expected network packet size

也可以看看:

getPeerCertificateChain

Added in API level 1
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

也可以看看:

getPeerCertificates

Added in API level 1
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

也可以看看:

getPeerHost

Added in API level 1
String getPeerHost ()

返回此会话中对等主机的名称。

对于服务器,这是客户端的主机; 对于客户端来说,它是服务器的主机。 该名称可能不是完全限定的主机名,甚至可能不是主机名,因为它可能表示对等网络地址的字符串编码。 如果需要这样的名称,则可以通过基于此方法返回的值的名称服务来解决。

该值未经过身份验证,不应被依赖。 它主要用作SSLSession缓存策略的提示。

Returns
String the host name of the peer host, or null if no information is available.

getPeerPort

Added in API level 1
int getPeerPort ()

返回此会话中的对等端口号。

对于服务器,这是客户端的端口号; 对于客户端来说,它是服务器的端口号。

该值未经过身份验证,不应被依赖。 它主要用作SSLSession缓存策略的提示。

Returns
int the port number of the peer host, or -1 if no information is available.

getPeerPrincipal

Added in API level 1
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

也可以看看:

getProtocol

Added in API level 1
String getProtocol ()

返回会话中用于所有连接的协议的标准名称。

这定义了连接中使用的协议。

Returns
String the standard name of the protocol used for all connections in the session.

getSessionContext

Added in API level 1
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.

getValue

Added in API level 1
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.

getValueNames

Added in API level 1
String[] getValueNames ()

返回绑定到Session中的所有应用程序层数据对象的名称数组。

出于安全原因,相同的命名值可能在不同的访问控制上下文中不可见。

Returns
String[] a non-null (possibly empty) array of names of the objects bound to this Session.

invalidate

Added in API level 1
void invalidate ()

使会话无效。

未来的连接将无法恢复或加入此会话。 但是,使用此会话的任何现有连接都可以继续使用会话,直到连接关闭。

也可以看看:

isValid

Added in API level 1
boolean isValid ()

返回此会话是否有效并可用于恢复或加入。

Returns
boolean true if this session may be rejoined.

也可以看看:

putValue

Added in API level 1
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.

removeValue

Added in API level 1
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.

Hooray!