javax.net.ssl

接口
异常
java.lang.Object
  继承者 javax.net.ssl.SSLContext

public class SSLContext
     
extends Object

此类的实例表示安全套接字协议的实现,它充当用于安全套接字工厂或 SSLEngine 的工厂。用可选的一组密钥和信任管理器及安全随机字节源初始化此类。

从以下版本开始:
1.4

构造方法摘要
protected SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
          创建 SSLContext 对象。
 
方法摘要
 SSLEngine createSSLEngine()
          使用此上下文创建新的 SSLEngine
 SSLEngine createSSLEngine(String peerHost, int peerPort)
          使用此上下文创建新的 SSLEngine,该上下文使用劝告同位体信息。
 SSLSessionContext getClientSessionContext()
          返回客户端会话上下文,它表示可供客户端 SSL 套接字握手阶段所使用的 SSL 会话集。
static SSLContext getDefault()
          返回默认的 SSL 上下文。
 SSLParameters getDefaultSSLParameters()
          返回表示此 SSL 上下文默认设置的 SSLParameters 的副本。
static SSLContext getInstance(String protocol)
          返回实现指定安全套接字协议的 SSLContext 对象。
static SSLContext getInstance(String protocol, Provider provider)
          返回实现指定安全套接字协议的 SSLContext 对象。
static SSLContext getInstance(String protocol, String provider)
          返回实现指定安全套接字协议的 SSLContext 对象。
 String getProtocol()
          返回此 SSLContext 对象的协议名称。
 Provider getProvider()
          返回此 SSLContext 对象的提供者。
 SSLSessionContext getServerSessionContext()
          返回服务器会话上下文,它表示可供服务器端 SSL 套接字握手阶段所使用的 SSL 会话集。
 SSLServerSocketFactory getServerSocketFactory()
          返回此上下文的 ServerSocketFactory 对象。
 SSLSocketFactory getSocketFactory()
          返回此上下文的 SocketFactory 对象。
 SSLParameters getSupportedSSLParameters()
          返回表示此 SSL 上下文受支持设置的 SSLParameters 的副本。
 void init(KeyManager[] km, TrustManager[] tm, SecureRandom random)
          初始化此上下文。
static void setDefault(SSLContext context)
          设置默认的 SSL 上下文。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SSLContext

protected SSLContext(SSLContextSpi contextSpi,
                     Provider provider,
                     String protocol)
创建 SSLContext 对象。

参数:
contextSpi - 代理
provider - 提供者
protocol - 协议
方法详细信息

getDefault

public static SSLContext getDefault()
                             throws NoSuchAlgorithmException
返回默认的 SSL 上下文。

如果默认上下文是使用 SSLContext.setDefault() 方法设置的,则返回该上下文。否则,第一次调用此方法将触发调用 SSLContext.getInstance("Default")。如果成功,则该对象成为默认的 SSL 上下文并返回。

默认上下文立即可用并且无需初始化

返回:
默认的 SSL 上下文
抛出:
NoSuchAlgorithmException - 如果 SSLContext.getInstance() 调用失败
从以下版本开始:
1.6

setDefault

public static void setDefault(SSLContext context)
设置默认的 SSL 上下文。它由对 getDefault() 的后续调用返回。默认上下文必须立即可用并且无需 初始化

参数:
context - SSLContext
抛出:
NullPointerException - 如果 context 为 null
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许 SSLPermission("setDefaultSSLContext")
从以下版本开始:
1.6

getInstance

public static SSLContext getInstance(String protocol)
                              throws NoSuchAlgorithmException
返回实现指定安全套接字协议的 SSLContext 对象。

此方法从首选提供者开始遍历已注册安全提供者列表。返回一个封装 SSLContextSpi 实现的新 SSLContext 对象,该实现取自支持指定协议的第一个提供者。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

参数:
protocol - 所请求协议的标准名称。有关标准协议名称的信息,请参见 Java Secure Socket Extension Reference Guide 的附录 A。
返回:
新的 SSLContext 对象。
抛出:
NoSuchAlgorithmException - 如果没有提供者支持指定协议的 TrustManagerFactorySpi 实现。
另请参见:
Provider

getInstance

public static SSLContext getInstance(String protocol,
                                     String provider)
                              throws NoSuchAlgorithmException,
                                     NoSuchProviderException
返回实现指定安全套接字协议的 SSLContext 对象。

返回一个封装 SSLContextSpi 实现的新 SSLContext 对象,该实现取自指定的提供者。指定的提供者必须在安全提供者列表中注册。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

参数:
protocol - 所请求协议的标准名称。有关标准协议名称的信息,请参见 Java Secure Socket Extension Reference Guide 的附录 A。
provider - 提供者的名称。
返回:
新的 SSLContext 对象。
抛出:
NoSuchAlgorithmException - 如果不能从指定提供者获得指定协议的 SSLContextSpi 实现。
NoSuchProviderException - 如果指定提供者未在安全提供者列表中注册。
IllegalArgumentException - 如果提供者的名称为 null 或空。
另请参见:
Provider

getInstance

public static SSLContext getInstance(String protocol,
                                     Provider provider)
                              throws NoSuchAlgorithmException
返回实现指定安全套接字协议的 SSLContext 对象。

返回一个封装 SSLContextSpi 实现的新 SSLContext 对象,该实现取自指定的 Provider 对象。 注意,指定的 Provider 对象无需在提供者列表中注册。

参数:
protocol - 所请求协议的标准名称。有关标准协议名称的信息,请参见 Java Secure Socket Extension Reference Guide 的附录 A。
provider - 提供者的实例。
返回:
新的 SSLContext 对象。
抛出:
NoSuchAlgorithmException - 如果不能从指定 Provider 对象获得指定协议的 KeyManagerFactorySpi 实现。
IllegalArgumentException - 如果提供者的名称为 null。
另请参见:
Provider

getProtocol

public final String getProtocol()
返回此 SSLContext 对象的协议名称。

这与创建此 SSLContext 对象的某个 getInstance 调用中所指定的名称相同。

返回:
SSLContext 对象的协议名称。

getProvider

public final Provider getProvider()
返回此 SSLContext 对象的提供者。

返回:
SSLContext 对象的提供者

init

public final void init(KeyManager[] km,
                       TrustManager[] tm,
                       SecureRandom random)
                throws KeyManagementException
初始化此上下文。前两个参数都可以为 null,在这种情况下将搜索装入的安全提供者来寻找适当工厂的最高优先级实现。同样,安全的 random 参数也可以为 null,在这种情况下将使用默认的实现。

只有数组中的第一个特定密钥和/或信任管理器实现类型的实例被使用。(例如,只有数组中的第一个 javax.net.ssl.X509KeyManager 被使用。)

参数:
km - 验证密钥源或 null
tm - 同位体验证信任决策源或 null
random - 此生成器的随机源或 null
抛出:
KeyManagementException - 如果此操作失败

getSocketFactory

public final SSLSocketFactory getSocketFactory()
返回此上下文的 SocketFactory 对象。

返回:
SocketFactory 对象
抛出:
IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()

getServerSocketFactory

public final SSLServerSocketFactory getServerSocketFactory()
返回此上下文的 ServerSocketFactory 对象。

返回:
ServerSocketFactory 对象
抛出:
IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()

createSSLEngine

public final SSLEngine createSSLEngine()
使用此上下文创建新的 SSLEngine

使用此工厂方法的应用程序不为内部会话重用策略提供提示。如果需要提示,则应该使用 createSSLEngine(String, int)

某些密码套件(例如 Kerberos)需要远程主机名信息,在这种情况下不应该使用此工厂方法。

返回:
SSLEngine 对象
抛出:
UnsupportedOperationException - 如果底层提供者不实现该操作。
IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()
从以下版本开始:
1.5

createSSLEngine

public final SSLEngine createSSLEngine(String peerHost,
                                       int peerPort)
使用此上下文创建新的 SSLEngine,该上下文使用劝告同位体信息。

使用此工厂方法的应用程序为内部会话重用策略提供提示。

某些密码套件(例如 Kerberos)需要远程主机名信息,在这种情况下需要指定 peerHost。

参数:
peerHost - 主机的非授权名
peerPort - 非授权端口
返回:
新的 SSLEngine 对象
抛出:
UnsupportedOperationException - 如果底层提供者不实现该操作。
IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()
从以下版本开始:
1.5

getServerSessionContext

public final SSLSessionContext getServerSessionContext()
返回服务器会话上下文,它表示可供服务器端 SSL 套接字握手阶段所使用的 SSL 会话集。

此上下文在一些环境下可能不可用,在这种情况下此方法返回 null。例如,当底层 SSL 提供者不提供 SSLSessionContext 接口实现时,此方法返回 null。否则返回非 null 会话上下文。

返回:
绑定到此 SSL 上下文的服务器会话上下文

getClientSessionContext

public final SSLSessionContext getClientSessionContext()
返回客户端会话上下文,它表示可供客户端 SSL 套接字握手阶段所使用的 SSL 会话集。

此上下文在一些环境下可能不可用,在这种情况下此方法返回 null。例如,当底层 SSL 提供者不提供 SSLSessionContext 接口实现时,此方法返回 null。否则返回非 null 会话上下文。

返回:
绑定到此 SSL 上下文的客户端会话上下文

getDefaultSSLParameters

public final SSLParameters getDefaultSSLParameters()
返回表示此 SSL 上下文默认设置的 SSLParameters 的副本。

该参数将始终具有密码套件和设置为非 null 值的协议数组。

返回:
具有默认设置的 SSLParameters 对象的副本
抛出:
UnsupportedOperationException - 如果不能获得默认的 SSL 参数。
从以下版本开始:
1.6

getSupportedSSLParameters

public final SSLParameters getSupportedSSLParameters()
返回表示此 SSL 上下文受支持设置的 SSLParameters 的副本。

该参数将始终具有密码套件和设置为非 null 值的协议数组。

返回:
具有受支持设置的 SSLParameters 对象的副本
抛出:
UnsupportedOperationException - 如果不能获得受支持的 SSL 参数。
从以下版本开始:
1.6