public class SSLContext
extends Object
java.lang.Object | |
↳ | javax.net.ssl.SSLContext |
这个类的实例代表一个安全的套接字协议实现,充当安全套接字工厂或SSLEngine
的工厂。 该类使用一组可选的密钥和信任管理器以及安全随机字节的来源进行初始化。
Android提供以下 SSLContext
协议:
Name | Supported (API Levels) |
---|---|
Default | 10+ |
SSL | 10+ |
SSLv3 | 10+ |
TLS | 1+ |
TLSv1 | 10+ |
TLSv1.1 | 16+ |
TLSv1.2 | 16+ |
Protected constructors |
|
---|---|
SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol) 创建一个SSLContext对象。 |
Public methods |
|
---|---|
final SSLEngine |
createSSLEngine() 使用此上下文创建一个新的 |
final SSLEngine |
createSSLEngine(String peerHost, int peerPort) 使用此上下文使用咨询对等信息创建新的 |
final SSLSessionContext |
getClientSessionContext() 返回客户端会话上下文,该上下文代表客户端SSL套接字握手阶段期间可用的SSL会话集。 |
static SSLContext |
getDefault() 返回默认的SSL上下文。 |
final SSLParameters |
getDefaultSSLParameters() 返回指示此SSL上下文的默认设置的SSLParameters的副本。 |
static SSLContext |
getInstance(String protocol) 返回实现指定安全套接字协议的 |
static SSLContext |
getInstance(String protocol, String provider) 返回实现指定安全套接字协议的 |
static SSLContext |
getInstance(String protocol, Provider provider) 返回实现指定安全套接字协议的 |
final String |
getProtocol() 返回此 |
final Provider |
getProvider() 返回此 |
final SSLSessionContext |
getServerSessionContext() 返回服务器会话上下文,该上下文表示可用于服务器端SSL套接字的握手阶段的SSL会话集。 |
final SSLServerSocketFactory |
getServerSocketFactory() 为此上下文返回一个 |
final SSLSocketFactory |
getSocketFactory() 为此上下文返回一个 |
final SSLParameters |
getSupportedSSLParameters() 返回SSLParameters的副本,指示此SSL上下文支持的设置。 |
final void |
init(KeyManager[] km, TrustManager[] tm, SecureRandom random) 初始化此上下文。 |
static void |
setDefault(SSLContext context) 设置默认的SSL上下文。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
SSLContext (SSLContextSpi contextSpi, Provider provider, String protocol)
创建一个SSLContext对象。
Parameters | |
---|---|
contextSpi |
SSLContextSpi : the delegate |
provider |
Provider : the provider |
protocol |
String : the protocol |
SSLEngine createSSLEngine ()
使用此上下文创建新的 SSLEngine
。
使用这种工厂方法的应用程序没有提供内部会话重用策略的提示。 如果需要提示,应该使用createSSLEngine(String, int)
。
某些密码套件(如Kerberos)需要远程主机名信息,在这种情况下,不应使用此工厂方法。
Returns | |
---|---|
SSLEngine |
the SSLEngine object |
Throws | |
---|---|
UnsupportedOperationException |
if the underlying provider does not implement the operation. |
IllegalStateException |
if the SSLContextImpl requires initialization and the init() has not been called |
SSLEngine createSSLEngine (String peerHost, int peerPort)
使用此上下文使用咨询对等信息创建新的 SSLEngine
。
使用此工厂方法的应用程序为内部会话重用策略提供了提示。
某些密码套件(如Kerberos)需要远程主机名信息,在这种情况下,需要指定peerHost。
Parameters | |
---|---|
peerHost |
String : the non-authoritative name of the host |
peerPort |
int : the non-authoritative port |
Returns | |
---|---|
SSLEngine |
the new SSLEngine object |
Throws | |
---|---|
UnsupportedOperationException |
if the underlying provider does not implement the operation. |
IllegalStateException |
if the SSLContextImpl requires initialization and the init() has not been called |
SSLSessionContext getClientSessionContext ()
返回客户端会话上下文,该上下文代表客户端SSL套接字握手阶段期间可用的SSL会话集。
在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。 例如,当底层SSL提供程序未提供SSLSessionContext接口的实现时,此方法返回null。 否则返回非空会话上下文。
Returns | |
---|---|
SSLSessionContext |
client session context bound to this SSL context |
SSLContext getDefault ()
返回默认的SSL上下文。
如果使用SSLContext.setDefault()
方法设置了默认上下文,则会返回该上下文。 否则,此方法的第一个调用会触发调用SSLContext.getInstance("Default")
。 如果成功,则将该对象作为默认SSL上下文并返回。
默认上下文立即可用,不需要 initialization 。
Returns | |
---|---|
SSLContext |
the default SSL context |
Throws | |
---|---|
NoSuchAlgorithmException |
if the SSLContext.getInstance() call fails |
SSLParameters getDefaultSSLParameters ()
返回指示此SSL上下文的默认设置的SSLParameters的副本。
参数将始终将密码套件和协议数组设置为非空值。
Returns | |
---|---|
SSLParameters |
a copy of the SSLParameters object with the default settings |
Throws | |
---|---|
UnsupportedOperationException |
if the default SSL parameters could not be obtained. |
SSLContext getInstance (String protocol)
返回实现指定安全套接字协议的 SSLContext
对象。
该方法遍历注册安全提供程序的列表,从最优先的提供程序开始。 返回一个新的SSLContext对象,该对象封装来自支持指定协议的第一个Provider的SSLContextSpi实现。
请注意,注册供应商列表可能通过 Security.getProviders()
方法检索。
Parameters | |
---|---|
protocol |
String : the standard name of the requested protocol. See the SSLContext section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard protocol names. |
Returns | |
---|---|
SSLContext |
the new SSLContext object. |
Throws | |
---|---|
NoSuchAlgorithmException |
if no Provider supports a TrustManagerFactorySpi implementation for the specified protocol. |
NullPointerException |
if protocol is null. |
也可以看看:
SSLContext getInstance (String protocol, String provider)
返回实现指定安全套接字协议的 SSLContext
对象。
返回封装指定提供程序的SSLContextSpi实现的新SSLContext对象。 指定的提供者必须在安全提供者列表中注册。
请注意,注册供应商列表可能通过 Security.getProviders()
方法检索。
Parameters | |
---|---|
protocol |
String : the standard name of the requested protocol. See the SSLContext section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard protocol names. |
provider |
String : the name of the provider. |
Returns | |
---|---|
SSLContext |
the new SSLContext object. |
Throws | |
---|---|
NoSuchAlgorithmException |
if a SSLContextSpi implementation for the specified protocol is not available from the specified provider. |
NoSuchProviderException |
if the specified provider is not registered in the security provider list. |
IllegalArgumentException |
if the provider name is null or empty. |
NullPointerException |
if protocol is null. |
也可以看看:
SSLContext getInstance (String protocol, Provider provider)
返回实现指定安全套接字协议的 SSLContext
对象。
返回封装指定Provider对象的SSLContextSpi实现的新SSLContext对象。 请注意,指定的Provider对象不必在提供程序列表中注册。
Parameters | |
---|---|
protocol |
String : the standard name of the requested protocol. See the SSLContext section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard protocol names. |
provider |
Provider : an instance of the provider. |
Returns | |
---|---|
SSLContext |
the new SSLContext object. |
Throws | |
---|---|
NoSuchAlgorithmException |
if a KeyManagerFactorySpi implementation for the specified protocol is not available from the specified Provider object. |
IllegalArgumentException |
if the provider name is null. |
NullPointerException |
if protocol is null. |
也可以看看:
String getProtocol ()
返回此 SSLContext
对象的协议名称。
这与在创建此 SSLContext
对象的 getInstance
调用之一中指定的名称相同。
Returns | |
---|---|
String |
the protocol name of this SSLContext object. |
Provider getProvider ()
返回此 SSLContext
对象的提供者。
Returns | |
---|---|
Provider |
the provider of this SSLContext object |
SSLSessionContext getServerSessionContext ()
返回服务器会话上下文,该上下文表示可用于服务器端SSL套接字的握手阶段的SSL会话集。
在某些环境中,此上下文可能不可用,在这种情况下,此方法返回null。 例如,当底层SSL提供程序未提供SSLSessionContext接口的实现时,此方法返回null。 否则返回非空会话上下文。
Returns | |
---|---|
SSLSessionContext |
server session context bound to this SSL context |
SSLServerSocketFactory getServerSocketFactory ()
为此上下文返回一个 ServerSocketFactory
对象。
Returns | |
---|---|
SSLServerSocketFactory |
the ServerSocketFactory object |
Throws | |
---|---|
IllegalStateException |
if the SSLContextImpl requires initialization and the init() has not been called |
SSLSocketFactory getSocketFactory ()
为此上下文返回一个 SocketFactory
对象。
Returns | |
---|---|
SSLSocketFactory |
the SocketFactory object |
Throws | |
---|---|
IllegalStateException |
if the SSLContextImpl requires initialization and the init() has not been called |
SSLParameters getSupportedSSLParameters ()
返回SSLParameters的副本,指示此SSL上下文支持的设置。
参数将始终将密码套件和协议数组设置为非空值。
Returns | |
---|---|
SSLParameters |
a copy of the SSLParameters object with the supported settings |
Throws | |
---|---|
UnsupportedOperationException |
if the supported SSL parameters could not be obtained. |
void init (KeyManager[] km, TrustManager[] tm, SecureRandom random)
初始化此上下文。 前两个参数中的任何一个都可能为空,在这种情况下,已安装的安全提供程序将被搜索相应工厂的最高优先级实施。 同样,安全随机参数可能为空,在这种情况下将使用默认实现。
只使用数组中特定键和/或信任管理器实现类型的第一个实例。 (例如,将只使用数组中的第一个javax.net.ssl.X509KeyManager。)
Parameters | |
---|---|
km |
KeyManager : the sources of authentication keys or null |
tm |
TrustManager : the sources of peer authentication trust decisions or null |
random |
SecureRandom : the source of randomness for this generator or null |
Throws | |
---|---|
KeyManagementException |
if this operation fails |
void setDefault (SSLContext context)
设置默认的SSL上下文。 它将通过后续调用返回getDefault()
。 默认上下文必须立即可用,不需要initialization 。
Parameters | |
---|---|
context |
SSLContext : the SSLContext |
Throws | |
---|---|
NullPointerException |
if context is null |
SecurityException |
if a security manager exists and its checkPermission method does not allow SSLPermission("setDefaultSSLContext") |