public class SSLContext extends Object
SSLEngine
s。
该类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。
Java平台的每个实现都需要支持以下标准SSLContext
协议:
Modifier | Constructor and Description |
---|---|
protected |
SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
创建一个SSLContext对象。
|
Modifier and Type | Method and Description |
---|---|
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 指定安全套接字协议的
SSLContext 对象。
|
static SSLContext |
getInstance(String protocol, Provider provider)
返回实现指定安全套接字协议的
SSLContext 对象。
|
static SSLContext |
getInstance(String protocol, String provider)
返回一个
SSLContext 指定安全套接字协议的
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上下文。
|
protected SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
contextSpi
- 代表
provider
- 提供商
protocol
- 协议
public static SSLContext getDefault() throws NoSuchAlgorithmException
如果使用SSLContext.setDefault()
方法设置了默认上下文,则返回它。 否则,该方法的第一次调用将触发SSLContext.getInstance("Default")
。 如果成功,该对象将成为默认的SSL上下文并返回。
默认上下文可立即使用,不需要initialization 。
NoSuchAlgorithmException
- 如果
SSLContext.getInstance()
调用失败
public static void setDefault(SSLContext context)
context
- SSLContext
NullPointerException
- 如果上下文为空
SecurityException
- 如果存在安全管理员,并且其
checkPermission
方法不允许
SSLPermission("setDefaultSSLContext")
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException
SSLContext
指定安全套接字协议的SSLContext
对象。
此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定协议的第一个Provider中封装SSLContextSpi实现的新SSLContext对象。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
protocol
- 所请求协议的标准名称。
看到的的SSLContext部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准协议名称的信息。
SSLContext
对象。
NoSuchAlgorithmException
- 如果没有提供者支持指定协议的SSLContextSpi实现。
NullPointerException
- 如果协议为空。
Provider
public static SSLContext getInstance(String protocol, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
SSLContext
对象。
返回从指定提供程序封装SSLContextSpi实现的新SSLContext对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
protocol
- 请求协议的标准名称。
看到的的SSLContext部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准协议名称的信息。
provider
- 提供者的名称。
SSLContext
对象。
NoSuchAlgorithmException
- 如果指定协议的SSLContextSpi实现不可用于指定的提供程序。
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册。
IllegalArgumentException
- 如果提供者名称为空或为空。
NullPointerException
- 如果协议为空。
Provider
public static SSLContext getInstance(String protocol, Provider provider) throws NoSuchAlgorithmException
SSLContext
指定安全套接字协议的SSLContext
对象。
返回从指定的Provider对象封装SSLContextSpi实现的新SSLContext对象。 请注意,指定的Provider对象不必在提供者列表中注册。
protocol
- 请求协议的标准名称。
看到的的SSLContext部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准协议名称的信息。
provider
- 提供者的一个实例。
SSLContext
对象。
NoSuchAlgorithmException
- 如果指定协议的SSLContextSpi实现从指定的Provider对象中不可用。
IllegalArgumentException
- 如果提供者为空。
NullPointerException
- 如果协议为空。
Provider
public final String getProtocol()
SSLContext
对象的协议名称。
这是在创建此SSLContext
对象的getInstance
调用之一中指定的getInstance
。
SSLContext
对象。
public final Provider getProvider()
SSLContext
对象的提供者。
SSLContext
对象的提供者
public final void init(KeyManager[] km, TrustManager[] tm, SecureRandom random) throws KeyManagementException
仅使用数组中特定键和/或信任管理器实现类型的第一个实例。 (例如,将仅使用数组中的第一个javax.net.ssl.X509KeyManager。)
km
- 认证密钥的来源或null
tm
- 对等认证信任决策的来源或null
random
- 此生成器的随机源或null
KeyManagementException
- 如果此操作失败
public final SSLSocketFactory getSocketFactory()
SocketFactory
对象。
SocketFactory
对象
IllegalStateException
- 如果SSLContextImpl需要初始化,并且尚未调用
init()
public final SSLServerSocketFactory getServerSocketFactory()
ServerSocketFactory
对象。
ServerSocketFactory
对象
IllegalStateException
- 如果SSLContextImpl需要初始化,并且
init()
尚未被调用
public final SSLEngine createSSLEngine()
SSLEngine
。
使用此工厂方法的应用程序不提供内部会话重用策略的提示。 如果需要提示,应该使用createSSLEngine(String, int)
。
某些密码套件(如Kerberos)需要远程主机名信息,在这种情况下,不应使用此工厂方法。
SSLEngine
对象
UnsupportedOperationException
- 如果底层提供程序未实现该操作。
IllegalStateException
- 如果SSLContextImpl需要初始化,并且尚未调用
init()
public final SSLEngine createSSLEngine(String peerHost, int peerPort)
SSLEngine
使用使用咨询等信息,这种情况下。
使用此工厂方法的应用程序正在为内部会话重用策略提供提示。
某些密码套件(如Kerberos)需要远程主机名信息,在这种情况下需要指定peerHost。
peerHost
- 主机的非权威名称
peerPort
- 非权威端口
SSLEngine
对象
UnsupportedOperationException
- 如果底层提供程序未实现该操作。
IllegalStateException
- 如果SSLContextImpl需要初始化,并且尚未调用
init()
public final SSLSessionContext getServerSessionContext()
这种情况在某些环境中可能不可用,在这种情况下,此方法返回null。 例如,当底层SSL提供程序不提供SSLSessionContext接口的实现时,此方法返回null。 否则返回非空会话上下文。
public final SSLSessionContext getClientSessionContext()
这种情况在某些环境中可能不可用,在这种情况下,此方法返回null。 例如,当底层SSL提供程序不提供SSLSessionContext接口的实现时,此方法返回null。 否则返回非空会话上下文。
public final SSLParameters getDefaultSSLParameters()
参数将始终将密码套件和协议数组设置为非空值。
UnsupportedOperationException
- 如果无法获取默认的SSL参数。
public final SSLParameters getSupportedSSLParameters()
参数将始终将密码套件和协议数组设置为非空值。
UnsupportedOperationException
- 如果无法获得支持的SSL参数。