- java.lang.Object
-
- javax.net.ssl.SSLContext
-
public class SSLContextextends Object
此类的实例表示安全套接字协议实现,它充当安全套接字工厂或SSLEngine
的工厂。 该类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。需要Java平台的每个实现来支持以下标准
SSLContext
协议:-
TLSv1
-
TLSv1.1
-
TLSv1.2
- 从以下版本开始:
- 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()
返回SSLParameters的副本,指示此SSL上下文的默认设置。static SSLContext
getInstance(String protocol)
返回实现指定安全套接字协议的SSLContext
对象。static SSLContext
getInstance(String protocol, String provider)
返回实现指定安全套接字协议的SSLContext
对象。static SSLContext
getInstance(String protocol, Provider provider)
返回实现指定安全套接字协议的SSLContext
对象。String
getProtocol()
返回此SSLContext
对象的协议名称。Provider
getProvider()
返回此SSLContext
对象的提供程序。SSLSessionContext
getServerSessionContext()
返回服务器会话上下文,表示服务器端SSL套接字在握手阶段可用的SSL会话集。SSLServerSocketFactory
getServerSocketFactory()
返回此上下文的ServerSocketFactory
对象。SSLSocketFactory
getSocketFactory()
返回此上下文的SocketFactory
对象。SSLParameters
getSupportedSSLParameters()
返回SSLParameters的副本,指示此SSL上下文支持的设置。void
init(KeyManager[] km, TrustManager[] tm, SecureRandom random)
初始化此上下文。static void
setDefault(SSLContext context)
设置默认SSL上下文。
-
-
-
构造方法详细信息
-
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上下文并返回。默认上下文可立即使用,不需要initialization 。
- 结果
- 默认的SSL上下文
- 异常
-
NoSuchAlgorithmException
- 如果SSLContext.getInstance()
呼叫失败 - 从以下版本开始:
- 1.6
-
setDefault
public static void setDefault(SSLContext context)
- 参数
-
context
- SSLContext - 异常
-
NullPointerException
- 如果context为null -
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许SSLPermission("setDefaultSSLContext")
- 从以下版本开始:
- 1.6
-
getInstance
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException
返回实现指定安全套接字协议的SSLContext
对象。此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。 将返回从第一个支持指定协议的Provider封装SSLContextSpi实现的新SSLContext对象。
请注意,可以通过
Security.getProviders()
方法检索已注册的提供程序列表。- Implementation Note:
- JDK Reference Implementation还使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()
返回的提供商的顺序不同。 - 参数
-
protocol
- 请求的协议的标准名称。 有关标准协议名称的信息,请参见Java Security Standard Algorithm Names Specification中的SSLContext部分。 - 结果
- 新的
SSLContext
对象 - 异常
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定协议的SSLContextSpi
实现 -
NullPointerException
- 如果protocol
是null
- 另请参见:
-
Provider
-
getInstance
public static SSLContext getInstance(String protocol, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回实现指定安全套接字协议的SSLContext
对象。将返回一个封装来自指定提供程序的SSLContextSpi实现的新SSLContext对象。 必须在安全提供程序列表中注册指定的提供程序。
请注意,可以通过
Security.getProviders()
方法检索已注册提供商的列表。- 参数
-
protocol
- 所请求协议的标准名称。 有关标准协议名称的信息,请参见Java Security Standard Algorithm Names Specification中的SSLContext部分。 -
provider
- 提供者的名称。 - 结果
- 新的
SSLContext
对象 - 异常
-
IllegalArgumentException
- 如果提供程序名称为null
或为空 -
NoSuchAlgorithmException
- 如果指定提供程序的指定协议的SSLContextSpi
实现不可用 -
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册 -
NullPointerException
- 如果protocol
是null
- 另请参见:
-
Provider
-
getInstance
public static SSLContext getInstance(String protocol, Provider provider) throws NoSuchAlgorithmException
返回实现指定安全套接字协议的SSLContext
对象。返回从指定的Provider对象封装SSLContextSpi实现的新SSLContext对象。 请注意,指定的Provider对象不必在提供程序列表中注册。
- 参数
-
protocol
- 请求的协议的标准名称。 有关标准协议名称的信息,请参见Java Security Standard Algorithm Names Specification中的SSLContext部分。 -
provider
- 提供者的实例。 - 结果
- 新的
SSLContext
对象 - 异常
-
IllegalArgumentException
- 如果提供者是null
-
NoSuchAlgorithmException
- 如果指定的协议的SSLContextSpi
实现不可用于指定的Provider
对象 -
NullPointerException
- 如果protocol
是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,在这种情况下,将搜索已安装的安全提供程序以寻找适当工厂的最高优先级实现。 同样,安全随机参数可以为空,在这种情况下将使用默认实现。仅使用阵列中特定键和/或信任管理器实现类型的第一个实例。 (例如,将仅使用数组中的第一个javax.net.ssl.X509KeyManager。)
- 参数
-
km
- 身份验证密钥的来源或null -
tm
- 对等身份验证信任决策的来源或null -
random
- 此生成器的随机源或null - 异常
-
KeyManagementException
- 如果此操作失败
-
getSocketFactory
public final SSLSocketFactory getSocketFactory()
返回此上下文的SocketFactory
对象。- 结果
-
SocketFactory
对象 - 异常
-
UnsupportedOperationException
- 如果基础提供程序未实现该操作。 -
IllegalStateException
- 如果SSLContextImpl需要初始化并且尚未调用init()
-
getServerSocketFactory
public final SSLServerSocketFactory getServerSocketFactory()
返回此上下文的ServerSocketFactory
对象。- 结果
-
ServerSocketFactory
对象 - 异常
-
UnsupportedOperationException
- 如果基础提供程序未实现该操作。 -
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。 否则返回非空会话上下文。
- 结果
- 绑定到此SSL上下文的服务器会话上下文
-
getClientSessionContext
public final SSLSessionContext getClientSessionContext()
返回客户端会话上下文,该上下文表示可在客户端SSL套接字的握手阶段使用的SSL会话集。在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。 例如,当底层SSL提供程序未提供SSLSessionContext接口的实现时,此方法返回null。 否则返回非空会话上下文。
- 结果
- 绑定到此SSL上下文的客户端会话上下文
-
getDefaultSSLParameters
public final SSLParameters getDefaultSSLParameters()
返回SSLParameters的副本,指示此SSL上下文的默认设置。参数将始终将密码组和协议数组设置为非空值。
- 结果
- 具有默认设置的SSLParameters对象的副本
- 异常
-
UnsupportedOperationException
- 如果无法获取默认SSL参数。 - 从以下版本开始:
- 1.6
-
getSupportedSSLParameters
public final SSLParameters getSupportedSSLParameters()
返回SSLParameters的副本,指示此SSL上下文支持的设置。参数将始终将密码组和协议数组设置为非空值。
- 结果
- 具有受支持设置的SSLParameters对象的副本
- 异常
-
UnsupportedOperationException
- 如果无法获取支持的SSL参数。 - 从以下版本开始:
- 1.6
-
-