public interface SSLSession
invalidate
应用程序而invalidate
。
会话管理策略通常用于调整性能。
除了标准会话属性之外,SSL会话会公开这些只读属性:
会话可能会被明确无效。 当面临某些种类的错误时,也可以隐式地完成无效。
Modifier and Type | Method and Description |
---|---|
int |
getApplicationBufferSize()
获取使用此会话时预期的最大应用程序数据的当前大小。
|
String |
getCipherSuite()
返回用于会话中所有连接的SSL加密套件的名称。
|
long |
getCreationTime()
返回此会话表示形式创建的时间,以1970年1月1日UTC为午夜的毫秒计。
|
byte[] |
getId()
返回分配给此会话的标识符。
|
long |
getLastAccessedTime()
返回会话级基础架构访问该会话表示的最后一次,以毫秒为单位,自1970年1月1日UTC之后。
|
Certificate[] |
getLocalCertificates()
返回在握手期间发送给对等体的证书。
|
Principal |
getLocalPrincipal()
返回在握手期间发送给对等体的主体。
|
int |
getPacketBufferSize()
获取使用此会话时预期的最大SSL / TLS数据包的当前大小。
|
X509Certificate[] |
getPeerCertificateChain()
返回被确定为定义会话一部分的对等体的身份。
|
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)
结合指定
value 对象与给定的会话的应用层数据
name 。
|
void |
removeValue(String name)
删除在会话的应用层数据中绑定到给定名称的对象。
|
byte[] getId()
SSLSessionContext getSessionContext()
这种情况在某些环境中可能不可用,在这种情况下,此方法返回null。
如果上下文可用并且安装了安全管理器,则调用者可能需要访问它的权限或者可能抛出安全异常。 在Java环境中,安全管理器的checkPermission
方法被调用了SSLPermission("getSSLSessionContext")
许可。
SecurityException
- 如果调用线程没有获取SSL会话上下文的权限。
long getCreationTime()
long getLastAccessedTime()
Access表示使用会话数据建立新连接。 应用程序级操作(如获取或设置与会话关联的值)不会在此访问时间中反映出来。
此信息在会话管理策略中特别有用。 例如,会话管理器线程可以在给定的上下文中留下所有未被长时间使用的会话; 或者,可以根据年龄对会话进行排序以优化某些任务。
void invalidate()
未来的连接将无法恢复或加入此会话。 但是,使用此会话的任何现有连接都可以继续使用会话,直到连接关闭。
isValid()
boolean isValid()
invalidate()
void putValue(String name, Object value)
value
对象与给定的会话的应用层数据name
。
使用相同的现有绑定name
被替换。 如果新(或现有的) value
实现了SSLSessionBindingListener
接口,那么SSLSessionBindingListener
表示的对象被value
通知。
出于安全考虑,在不同的访问控制上下文中可能看不到相同的命名值。
name
- 要绑定数据对象的名称。
这可能不是null。
value
- 要绑定的数据对象。
这可能不是null。
IllegalArgumentException
- 如果任一参数为空。
Object getValue(String name)
出于安全考虑,在不同的访问控制上下文中可能看不到相同的命名值。
name
-找到绑定的名称。
IllegalArgumentException
- 如果参数为空。
void removeValue(String name)
SessionBindingListener
接口,它被适当地通知。
出于安全考虑,在不同的访问控制上下文中可能看不到相同的命名值。
name
- 要移除的对象的名称可跨不同访问控制上下文显示
IllegalArgumentException
- 如果参数为空。
String[] getValueNames()
出于安全考虑,在不同的访问控制上下文中可能看不到相同的命名值。
Certificate[] getPeerCertificates() throws SSLPeerUnverifiedException
注意:此方法只能在使用基于证书的密码套件时使用; 与非基于证书的密码套件(如Kerberos)一起使用,将抛出SSLPeerUnverifiedException异常。
SSLPeerUnverifiedException
- 如果对等体的身份未被验证
getPeerPrincipal()
Certificate[] getLocalCertificates()
注意:此方法仅在使用基于证书的密码套件时有用。
当多个证书可用于握手时,该实现将选择它认为“最佳”证书链可用,并将其传输到另一方。 该方法允许调用者知道实际使用哪个证书链。
getLocalPrincipal()
X509Certificate[] getPeerCertificateChain() throws SSLPeerUnverifiedException
注意:此方法只能在使用基于证书的密码套件时使用; 与非基于证书的密码套件(如Kerberos)一起使用,将抛出SSLPeerUnverifiedException异常。
注意:此方法与以前的版本兼容。 新的应用程序应该使用getPeerCertificates()
。
X509Certificate
格式。)
SSLPeerUnverifiedException
- 如果对等体的身份未被验证
getPeerPrincipal()
Principal getPeerPrincipal() throws SSLPeerUnverifiedException
SSLPeerUnverifiedException
- 如果对等体的身份未被验证
getPeerCertificates()
,
getLocalPrincipal()
Principal getLocalPrincipal()
getLocalCertificates()
,
getPeerPrincipal()
String getCipherSuite()
这定义了提供给在连接上发送的数据的保护级别,包括所使用的加密类型以及认证方式的大部分方面。
String getProtocol()
这定义了连接中使用的协议。
String getPeerHost()
对于服务器,这是客户端的主机; 对于客户端,它是服务器的主机。 该名称可能不是完全限定的主机名,甚至是主机名,因为它可能代表对等体的网络地址的字符串编码。 如果需要这样的名称,可以通过基于此方法返回的值的名称服务来解决。
该值未通过身份验证,不应被依赖。 它主要用作SSLSession
缓存策略的提示。
int getPeerPort()
对于服务器,这是客户端的端口号; 对于客户端,它是服务器的端口号。
该值未通过身份验证,不应被依赖。 它主要用作SSLSession
缓存策略的提示。
int getPacketBufferSize()
使用此会话的SSLEngine
可以生成任何大小的SSL / TLS数据包,包括此方法返回的值。 所有SSLEngine
网络缓冲区的大小至少应该大到这一点,以避免执行wrap
和unwrap
调用时空间不足的问题。
SSLEngine.wrap(ByteBuffer, ByteBuffer)
,
SSLEngine.unwrap(ByteBuffer, ByteBuffer)
int getApplicationBufferSize()
SSLEngine
应用数据缓冲器必须足够大以容纳来自所接收的任何入站网络应用数据分组的应用数据。 通常,出站应用程序数据缓冲区可以是任何大小。
SSLEngine.wrap(ByteBuffer, ByteBuffer)
,
SSLEngine.unwrap(ByteBuffer, ByteBuffer)