- java.lang.Object
-
- javax.net.ssl.SSLContext
-
public class SSLContext extends Object
此类的实例表示安全套接字协议实现,它充当安全套接字工厂或SSLEngine的工厂。 该类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。需要Java平台的每个实现来支持以下标准
SSLContext协议:-
TLSv1 -
TLSv1.1 -
TLSv1.2
- 从以下版本开始:
- 1.4
-
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedSSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)创建SSLContext对象。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 SSLEnginecreateSSLEngine()使用此上下文创建新的SSLEngine。SSLEnginecreateSSLEngine(String peerHost, int peerPort)使用咨询对等信息使用此上下文创建新的SSLEngine。SSLSessionContextgetClientSessionContext()返回客户端会话上下文,该上下文表示可在客户端SSL套接字的握手阶段使用的SSL会话集。static SSLContextgetDefault()返回默认的SSL上下文。SSLParametersgetDefaultSSLParameters()返回SSLParameters的副本,指示此SSL上下文的默认设置。static SSLContextgetInstance(String protocol)返回实现指定安全套接字协议的SSLContext对象。static SSLContextgetInstance(String protocol, String provider)返回实现指定安全套接字协议的SSLContext对象。static SSLContextgetInstance(String protocol, Provider provider)返回实现指定安全套接字协议的SSLContext对象。StringgetProtocol()返回此SSLContext对象的协议名称。ProvidergetProvider()返回此SSLContext对象的提供程序。SSLSessionContextgetServerSessionContext()返回服务器会话上下文,表示服务器端SSL套接字在握手阶段可用的SSL会话集。SSLServerSocketFactorygetServerSocketFactory()返回此上下文的ServerSocketFactory对象。SSLSocketFactorygetSocketFactory()返回此上下文的SocketFactory对象。SSLParametersgetSupportedSSLParameters()返回SSLParameters的副本,指示此SSL上下文支持的设置。voidinit(KeyManager[] km, TrustManager[] tm, SecureRandom random)初始化此上下文。static voidsetDefault(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.preferredSecurity属性来确定指定算法的首选提供程序顺序。 这可能与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
-
-