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