java.lang.Object javax.net.ssl.SSLContext
public class SSLContext
此类的实例表示安全套接字协议的实现,它充当用于安全套接字工厂或 SSLEngine
的工厂。用可选的一组密钥和信任管理器及安全随机字节源初始化此类。
构造方法摘要 | |
---|---|
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() 返回表示此 SSL 上下文默认设置的 SSLParameters 的副本。 |
static SSLContext |
getInstance(String protocol) 返回实现指定安全套接字协议的 SSLContext 对象。 |
static SSLContext |
getInstance(String protocol, Provider provider) 返回实现指定安全套接字协议的 SSLContext 对象。 |
static SSLContext |
getInstance(String protocol, String provider) 返回实现指定安全套接字协议的 SSLContext 对象。 |
String |
getProtocol() 返回此 SSLContext 对象的协议名称。 |
Provider |
getProvider() 返回此 SSLContext 对象的提供者。 |
SSLSessionContext |
getServerSessionContext() 返回服务器会话上下文,它表示可供服务器端 SSL 套接字握手阶段所使用的 SSL 会话集。 |
SSLServerSocketFactory |
getServerSocketFactory() 返回此上下文的 ServerSocketFactory 对象。 |
SSLSocketFactory |
getSocketFactory() 返回此上下文的 SocketFactory 对象。 |
SSLParameters |
getSupportedSSLParameters() 返回表示此 SSL 上下文受支持设置的 SSLParameters 的副本。 |
void |
init(KeyManager[] km, TrustManager[] tm, SecureRandom random) 初始化此上下文。 |
static void |
setDefault(SSLContext context) 设置默认的 SSL 上下文。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
protected SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
contextSpi
- 代理
provider
- 提供者
protocol
- 协议
方法详细信息 |
---|
public static SSLContext getDefault() throws NoSuchAlgorithmException
如果默认上下文是使用 SSLContext.setDefault()
方法设置的,则返回该上下文。否则,第一次调用此方法将触发调用 SSLContext.getInstance("Default")
。如果成功,则该对象成为默认的 SSL 上下文并返回。
默认上下文立即可用并且无需初始化。
NoSuchAlgorithmException
- 如果
SSLContext.getInstance()
调用失败
public static void setDefault(SSLContext context)
getDefault()
的后续调用返回。默认上下文必须立即可用并且无需
初始化。
context
- SSLContext
NullPointerException
- 如果 context 为 null
SecurityException
- 如果安全管理器存在并且其
checkPermission
方法不允许
SSLPermission("setDefaultSSLContext")
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException
SSLContext
对象。
此方法从首选提供者开始遍历已注册安全提供者列表。返回一个封装 SSLContextSpi 实现的新 SSLContext 对象,该实现取自支持指定协议的第一个提供者。
注意,可以通过 Security.getProviders()
方法获取已注册提供者列表。
protocol
- 所请求协议的标准名称。有关标准协议名称的信息,请参见
Java Secure Socket Extension Reference Guide 的附录 A。
SSLContext
对象。
NoSuchAlgorithmException
- 如果没有提供者支持指定协议的 TrustManagerFactorySpi 实现。
Provider
public static SSLContext getInstance(String protocol, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
SSLContext
对象。
返回一个封装 SSLContextSpi 实现的新 SSLContext 对象,该实现取自指定的提供者。指定的提供者必须在安全提供者列表中注册。
注意,可以通过 Security.getProviders()
方法获取已注册提供者列表。
protocol
- 所请求协议的标准名称。有关标准协议名称的信息,请参见
Java Secure Socket Extension Reference Guide 的附录 A。
provider
- 提供者的名称。
SSLContext
对象。
NoSuchAlgorithmException
- 如果不能从指定提供者获得指定协议的 SSLContextSpi 实现。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中注册。
IllegalArgumentException
- 如果提供者的名称为 null 或空。
Provider
public static SSLContext getInstance(String protocol, Provider provider) throws NoSuchAlgorithmException
SSLContext
对象。
返回一个封装 SSLContextSpi 实现的新 SSLContext 对象,该实现取自指定的 Provider 对象。 注意,指定的 Provider 对象无需在提供者列表中注册。
protocol
- 所请求协议的标准名称。有关标准协议名称的信息,请参见
Java Secure Socket Extension Reference Guide 的附录 A。
provider
- 提供者的实例。
SSLContext
对象。
NoSuchAlgorithmException
- 如果不能从指定 Provider 对象获得指定协议的 KeyManagerFactorySpi 实现。
IllegalArgumentException
- 如果提供者的名称为 null。
Provider
public final String getProtocol()
SSLContext
对象的协议名称。
这与创建此 SSLContext
对象的某个 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。否则返回非 null 会话上下文。
public final SSLSessionContext getClientSessionContext()
此上下文在一些环境下可能不可用,在这种情况下此方法返回 null。例如,当底层 SSL 提供者不提供 SSLSessionContext 接口实现时,此方法返回 null。否则返回非 null 会话上下文。
public final SSLParameters getDefaultSSLParameters()
该参数将始终具有密码套件和设置为非 null 值的协议数组。
UnsupportedOperationException
- 如果不能获得默认的 SSL 参数。
public final SSLParameters getSupportedSSLParameters()
该参数将始终具有密码套件和设置为非 null 值的协议数组。
UnsupportedOperationException
- 如果不能获得受支持的 SSL 参数。