- java.lang.Object
-
- javax.net.ssl.SSLContext
-
public class SSLContext extends Object
这个类的实例代表一个安全的套接字协议实现,作为安全套接字工厂的工厂或SSLEngine
。 该类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。Java平台的每个实现都需要支持以下标准的
SSLContext
协议:-
TLSv1
-
TLSv1.1
-
TLSv1.2
- 从以下版本开始:
- 1.4
-
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
创建一个SSLContext对象。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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, 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
- 如果上下文为空 -
SecurityException
- 如果存在安全管理员,并且其checkPermission
方法不允许SSLPermission("setDefaultSSLContext")
- 从以下版本开始:
- 1.6
-
getInstance
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException
返回实现指定安全套接字协议的SSLContext
对象。此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定协议的第一个Provider中封装SSLContextSpi实现的新SSLContext对象。
请注意,注册提供商的列表可以通过
Security.getProviders()
方法检索。- Implementation Note:
-
JDK参考实现另外使用
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
- 认证密钥的来源或空值 -
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()
返回指示此SSL上下文默认设置的SSLParameters的副本。参数将始终将密码套件和协议数组设置为非空值。
- 结果
- 具有默认设置的SSLParameters对象的副本
- 异常
-
UnsupportedOperationException
- 如果无法获取默认的SSL参数。 - 从以下版本开始:
- 1.6
-
getSupportedSSLParameters
public final SSLParameters getSupportedSSLParameters()
返回SSLParameters的副本,表示支持的SSL上下文设置。参数将始终将密码套件和协议数组设置为非空值。
- 结果
- 具有支持的设置的SSLParameters对象的副本
- 异常
-
UnsupportedOperationException
- 如果无法获得支持的SSL参数。 - 从以下版本开始:
- 1.6
-
-