SSLEngine
的工厂。该类初始化时可选地设置一组密钥和信任管理器以及安全随机字节的来源。
Java平台的每个实现都必须支持以下标准的SSLContext
协议:
TLSv1.2
- 自版本:
- 1.4
-
Constructor Summary
ModifierConstructorDescriptionprotected
SSLContext
(SSLContextSpi contextSpi, Provider provider, String protocol) 创建一个SSLContext对象。 -
Method Summary
Modifier and TypeMethodDescriptionfinal SSLEngine
使用此上下文创建一个新的SSLEngine
。final SSLEngine
createSSLEngine
(String peerHost, int peerPort) 使用此上下文使用建议的对等信息创建一个新的SSLEngine
。final SSLSessionContext
返回客户端会话上下文,表示在客户端SSL套接字握手阶段可用的SSL会话集。static SSLContext
返回默认的SSL上下文。final SSLParameters
返回SSL上下文的默认设置的SSLParameters的副本。static SSLContext
getInstance
(String protocol) 返回实现指定安全套接字协议的SSLContext
对象。static SSLContext
getInstance
(String protocol, String provider) 返回实现指定安全套接字协议的SSLContext
对象。static SSLContext
getInstance
(String protocol, Provider provider) 返回实现指定安全套接字协议的SSLContext
对象。final String
返回此SSLContext
对象的协议名称。final Provider
返回此SSLContext
对象的提供者。final SSLSessionContext
返回服务器会话上下文,表示在服务器端SSL套接字握手阶段可用的SSL会话集。final SSLServerSocketFactory
返回此上下文的ServerSocketFactory
对象。final SSLSocketFactory
返回此上下文的SocketFactory
对象。final SSLParameters
返回此SSL上下文的支持设置的SSLParameters的副本。final void
init
(KeyManager[] km, TrustManager[] tm, SecureRandom random) 初始化此上下文。static void
setDefault
(SSLContext context) 设置默认的SSL上下文。
-
Constructor Details
-
SSLContext
创建一个SSLContext对象。- 参数:
-
contextSpi
- 代理 -
provider
- 提供者 -
protocol
- 协议
-
-
Method Details
-
getDefault
返回默认的SSL上下文。如果使用
SSLContext.setDefault()
方法设置了默认上下文,则将返回该上下文。否则,第一次调用此方法将触发调用SSLContext.getInstance("Default")
。如果成功,该对象将成为默认的SSL上下文并返回。默认上下文可立即使用,无需初始化。
- 返回:
- 默认的SSL上下文
- 抛出:
-
NoSuchAlgorithmException
- 如果SSLContext.getInstance()
调用失败 - 自版本:
- 1.6
-
setDefault
设置默认的SSL上下文。后续调用getDefault()
将返回该上下文。默认上下文必须立即可用,不需要初始化。- 参数:
-
context
- SSLContext - 抛出:
-
NullPointerException
- 如果上下文为null -
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许SSLPermission("setDefaultSSLContext")
- 自版本:
- 1.6
-
getInstance
返回实现指定安全套接字协议的SSLContext
对象。此方法遍历已注册的安全提供者列表,从最优先的提供者开始。返回封装了支持指定协议的第一个提供者的SSLContextSpi实现的新SSLContext对象。
请注意,已注册提供者列表可通过
Security.getProviders()
方法检索。- 实现说明:
-
JDK参考实现还使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。这可能与Security.getProviders()
返回的提供者顺序不同。 - 参数:
-
protocol
- 请求协议的标准名称。有关标准协议名称的信息,请参阅Java安全标准算法名称规范中的SSLContext部分。 - 返回:
-
新的
SSLContext
对象 - 抛出:
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定协议的SSLContextSpi
实现 -
NullPointerException
- 如果protocol
为null
- 参见:
-
getInstance
public static SSLContext getInstance(String protocol, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 返回实现指定安全套接字协议的SSLContext
对象。返回封装了来自指定提供者的SSLContextSpi实现的新SSLContext对象。指定的提供者必须在安全提供者列表中注册。
请注意,已注册提供者列表可通过
Security.getProviders()
方法检索。- 参数:
-
protocol
- 请求协议的标准名称。有关标准协议名称的信息,请参阅Java安全标准算法名称规范中的SSLContext部分。 -
provider
- 提供者的名称。 - 返回:
-
新的
SSLContext
对象 - 抛出:
-
IllegalArgumentException
- 如果提供者名称为null
或空 -
NoSuchAlgorithmException
- 如果指定提供者中不可用指定协议的SSLContextSpi
实现 -
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中注册 -
NullPointerException
- 如果protocol
为null
- 参见:
-
getInstance
public static SSLContext getInstance(String protocol, Provider provider) throws NoSuchAlgorithmException 返回实现指定安全套接字协议的SSLContext
对象。返回封装了来自指定Provider对象的SSLContextSpi实现的新SSLContext对象。请注意,指定的Provider对象不必在提供者列表中注册。
- 参数:
-
protocol
- 请求协议的标准名称。有关标准协议名称的信息,请参阅Java安全标准算法名称规范中的SSLContext部分。 -
provider
- 提供者的实例。 - 返回:
-
新的
SSLContext
对象 - 抛出:
-
IllegalArgumentException
- 如果提供者为null
-
NoSuchAlgorithmException
- 如果指定Provider
对象中不可用指定协议的SSLContextSpi
实现 -
NullPointerException
- 如果protocol
为null
- 参见:
-
getProtocol
返回此SSLContext
对象的协议名称。这是在创建此
SSLContext
对象的getInstance
调用中指定的名称。- 返回:
-
此
SSLContext
对象的协议名称。
-
getProvider
返回此SSLContext
对象的提供者。- 返回:
-
此
SSLContext
对象的提供者
-
init
public final void init(KeyManager[] km, TrustManager[] tm, SecureRandom random) throws KeyManagementException 初始化此上下文。如果前两个参数中的任一参数为null,则将搜索已安装的安全提供者,以查找适当工厂的优先级最高的实现。同样,如果安全随机参数为null,则将使用默认实现。数组中特定密钥和/或信任管理器实现类型的第一个实例将被使用。(例如,数组中的第一个javax.net.ssl.X509KeyManager将被使用。)
- 参数:
-
km
- 认证密钥的来源或为null -
tm
- 对等认证信任决策的来源或为null -
random
- 用于此生成器的随机源或为null - 抛出:
-
KeyManagementException
- 如果此操作失败
-
getSocketFactory
返回此上下文的SocketFactory
对象。- 返回:
-
SocketFactory
对象 - 抛出:
-
UnsupportedOperationException
- 如果底层提供程序未实现该操作。 -
IllegalStateException
- 如果SSLContextImpl需要初始化且未调用init()
-
getServerSocketFactory
返回此上下文的ServerSocketFactory
对象。- 返回:
-
ServerSocketFactory
对象 - 抛出:
-
UnsupportedOperationException
- 如果底层提供程序未实现该操作。 -
IllegalStateException
- 如果SSLContextImpl需要初始化且未调用init()
-
createSSLEngine
使用此上下文创建一个新的SSLEngine
。使用此工厂方法的应用程序未提供内部会话重用策略的提示。如果需要提示,应改用
createSSLEngine(String, int)
。某些密码套件(如Kerberos)需要远程主机名信息,在这种情况下,不应使用此工厂方法。
- 实现注意:
-
返回的SSLEngine默认使用客户端模式还是服务器模式取决于提供程序。JDK SunJSSE提供程序实现默认使用服务器模式。但是,建议在调用SSLEngine的其他方法之前始终通过调用
SSLEngine.setUseClientMode()
显式设置所需模式。 - 返回:
-
SSLEngine
对象 - 抛出:
-
UnsupportedOperationException
- 如果底层提供程序未实现该操作。 -
IllegalStateException
- 如果SSLContextImpl需要初始化且未调用init()
- 自1.5起:
- 1.5
-
createSSLEngine
使用此上下文和建议的对等信息创建一个新的SSLEngine
。使用此工厂方法的应用程序为内部会话重用策略提供提示。
某些密码套件(如Kerberos)需要远程主机名信息,在这种情况下,需要指定peerHost。
- 实现注意:
-
返回的SSLEngine默认使用客户端模式还是服务器模式取决于提供程序。JDK SunJSSE提供程序实现默认使用服务器模式。但是,建议在调用SSLEngine的其他方法之前始终通过调用
SSLEngine.setUseClientMode()
显式设置所需模式。 - 参数:
-
peerHost
- 主机的非权威名称 -
peerPort
- 非权威端口 - 返回:
-
新的
SSLEngine
对象 - 抛出:
-
UnsupportedOperationException
- 如果底层提供程序未实现该操作。 -
IllegalStateException
- 如果SSLContextImpl需要初始化且未调用init()
- 自1.5起:
- 1.5
-
getServerSessionContext
返回服务器会话上下文,表示在服务器端SSL套接字的握手阶段可用的SSL会话集。在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。例如,当底层SSL提供程序未提供SSLSessionContext接口的实现时,此方法返回null。否则将返回非null会话上下文。
- 返回:
- 绑定到此SSL上下文的服务器会话上下文
-
getClientSessionContext
返回客户端会话上下文,表示在客户端SSL套接字的握手阶段可用的SSL会话集。在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。例如,当底层SSL提供程序未提供SSLSessionContext接口的实现时,此方法返回null。否则将返回非null会话上下文。
- 返回:
- 绑定到此SSL上下文的客户端会话上下文
-
getDefaultSSLParameters
返回SSL上下文的SSLParameters的副本,指示此SSL上下文的默认设置。参数将始终将密码套件和协议数组设置为非null值。
- 返回:
- 具有默认设置的SSLParameters对象的副本
- 抛出:
-
UnsupportedOperationException
- 如果无法获取默认SSL参数。 - 自1.6起:
- 1.6
-
getSupportedSSLParameters
返回SSL上下文的SSLParameters的副本,指示此SSL上下文支持的设置。参数将始终将密码套件和协议数组设置为非null值。
- 返回:
- 具有支持设置的SSLParameters对象的副本
- 抛出:
-
UnsupportedOperationException
- 如果无法获取支持的SSL参数。 - 自1.6起:
- 1.6
-