模块 java.base

类 SSLContext

java.lang.Object
javax.net.ssl.SSLContext

public class SSLContext extends Object
此类的实例表示一个安全套接字协议实现,它充当安全套接字工厂或 SSLEngine 的工厂。此类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。

Java 平台的每个实现都需要支持以下标准 SSLContext 协议:

  • TLSv1.2
该协议在 Java 安全标准算法名称规范的 SSLContext 部分 中进行了描述。请查阅您的实施的发布文档以查看是否支持任何其他协议。
自从:
1.4
  • 构造方法详细信息

    • SSLContext

      protected SSLContext(SSLContextSpi  contextSpi, Provider  provider, String  protocol)
      创建一个 SSLContext 对象。
      参数:
      contextSpi - 代表
      provider - 供应商
      protocol - 协议
  • 方法详情

    • getDefault

      public static SSLContext  getDefault() throws NoSuchAlgorithmException
      返回默认的 SSL 上下文。

      如果使用 SSLContext.setDefault() 方法设置了默认上下文,则返回它。否则,第一次调用此方法会触发调用 SSLContext.getInstance("Default") 。如果成功,该对象将成为默认的 SSL 上下文并返回。

      默认上下文立即可用,不需要 初始化

      返回:
      默认的 SSL 上下文
      抛出:
      NoSuchAlgorithmException - 如果 SSLContext.getInstance() 调用失败
      自从:
      1.6
    • setDefault

      public static void setDefault(SSLContext  context)
      设置默认的 SSL 上下文。它将通过后续调用 getDefault() 返回。默认上下文必须立即可用并且不需要 初始化
      参数:
      context - SSL上下文
      抛出:
      NullPointerException - 如果上下文为空
      SecurityException - 如果安全管理器存在且其 checkPermission 方法不允许 SSLPermission("setDefaultSSLContext")
      自从:
      1.6
    • getInstance

      public static SSLContext  getInstance(String  protocol) throws NoSuchAlgorithmException
      返回实现指定安全套接字协议的 SSLContext 对象。

      此方法遍历已注册的安全提供者列表,从最喜欢的提供者开始。返回一个新的 SSLContext 对象,该对象封装了第一个支持指定协议的 Provider 的 SSLContextSpi 实现。

      请注意,可以通过 Security.getProviders() 方法检索已注册提供商的列表。

      实现注意事项:
      JDK 参考实现还使用 jdk.security.provider.preferred Security 属性来确定指定算法的首选提供程序顺序。这可能与 Security.getProviders() 返回的提供商顺序不同。
      参数:
      protocol - 所请求协议的标准名称。有关标准协议名称的信息,请参阅 Java 安全标准算法名称规范 中的 SSLContext 部分。
      返回:
      新的 SSLContext 对象
      抛出:
      NoSuchAlgorithmException - 如果没有 Provider 支持指定协议的 SSLContextSpi 实现
      NullPointerException - 如果 protocolnull
      参见:
    • 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 - 如果 protocolnull
      参见:
    • getInstance

      public static SSLContext  getInstance(String  protocol, Provider  provider) throws NoSuchAlgorithmException
      返回实现指定安全套接字协议的 SSLContext 对象。

      返回一个新的 SSLContext 对象,该对象封装了来自指定 Provider 对象的 SSLContextSpi 实现。请注意,指定的提供者对象不必在提供者列表中注册。

      参数:
      protocol - 所请求协议的标准名称。有关标准协议名称的信息,请参阅 Java 安全标准算法名称规范 中的 SSLContext 部分。
      provider - 提供者的一个实例。
      返回:
      新的 SSLContext 对象
      抛出:
      IllegalArgumentException - 如果提供商是 null
      NoSuchAlgorithmException - 如果无法从指定的 Provider 对象获得指定协议的 SSLContextSpi 实现
      NullPointerException - 如果 protocolnull
      参见:
    • getProtocol

      public final String  getProtocol()
      返回此 SSLContext 对象的协议名称。

      这与在创建此 SSLContext 对象的 getInstance 调用之一中指定的名称相同。

      返回:
      SSLContext 对象的协议名称。
    • getProvider

      public final Provider  getProvider()
      返回此 SSLContext 对象的提供者。
      返回:
      这个 SSLContext 对象的提供者
    • init

      public final void init(KeyManager [] km, TrustManager [] tm, SecureRandom  random) throws KeyManagementException
      初始化此上下文。前两个参数中的任何一个都可以为空,在这种情况下,将搜索已安装的安全提供程序以寻找适当工厂的最高优先级实现。同样,安全随机参数可能为空,在这种情况下将使用默认实现。

      仅使用数组中特定密钥和/或信任管理器实现类型的第一个实例。 (例如,只会使用数组中的第一个 javax.net.ssl.X509KeyManager。)

      参数:
      km - 身份验证密钥的来源或 null
      tm - 对等身份验证信任决策的来源或 null
      random - 此生成器的随机源或 null
      抛出:
      KeyManagementException - 如果此操作失败
    • getSocketFactory

      public final SSLSocketFactory  getSocketFactory()
      返回此上下文的 SocketFactory 对象。
      返回:
      SocketFactory 对象
      抛出:
      UnsupportedOperationException - 如果底层提供者没有实现该操作。
      IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()
    • getServerSocketFactory

      public final SSLServerSocketFactory  getServerSocketFactory()
      返回此上下文的 ServerSocketFactory 对象。
      返回:
      ServerSocketFactory 对象
      抛出:
      UnsupportedOperationException - 如果底层提供者没有实现该操作。
      IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()
    • createSSLEngine

      public final SSLEngine  createSSLEngine()
      使用此上下文创建一个新的 SSLEngine

      使用此工厂方法的应用程序未提供有关内部会话重用策略的提示。如果需要提示,则应改用 createSSLEngine(String, int)

      某些密码套件(例如 Kerberos)需要远程主机名信息,在这种情况下不应使用此工厂方法。

      实现注意事项:
      如果返回的 SSLEngine 默认使用客户端或服务模式进行 (D)TLS 连接,则它是特定于提供程序的。 JDK SunJSSE 提供程序实现默认使用服务模式。但是,建议始终在调用 SSLEngine 的其他方法之前通过调用 SSLEngine.setUseClientMode() 显式设置所需的模式。
      返回:
      SSLEngine 对象
      抛出:
      UnsupportedOperationException - 如果底层提供者没有实现该操作。
      IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()
      自从:
      1.5
    • createSSLEngine

      public final SSLEngine  createSSLEngine(String  peerHost, int peerPort)
      使用咨询对等信息使用此上下文创建一个新的 SSLEngine

      使用此工厂方法的应用程序正在为内部会话重用策略提供提示。

      一些密码套件(例如 Kerberos)需要远程主机名信息,在这种情况下需要指定 peerHost。

      实现注意事项:
      如果返回的 SSLEngine 默认使用客户端或服务模式进行 (D)TLS 连接,则它是特定于提供程序的。 JDK SunJSSE 提供程序实现默认使用服务模式。但是,建议始终在调用 SSLEngine 的其他方法之前通过调用 SSLEngine.setUseClientMode() 显式设置所需的模式。
      参数:
      peerHost - 主机的非权威名称
      peerPort - 非权威端口
      返回:
      新的 SSLEngine 对象
      抛出:
      UnsupportedOperationException - 如果底层提供者没有实现该操作。
      IllegalStateException - 如果 SSLContextImpl 需要初始化并且尚未调用 init()
      自从:
      1.5
    • getServerSessionContext

      public final SSLSessionContext  getServerSessionContext()
      返回服务会话上下文,它表示在服务端 SSL 套接字的握手阶段可用的 SSL 会话集。

      此上下文在某些环境中可能不可用,在这种情况下此方法返回 null。例如,当底层 SSL 提供者不提供 SSLSessionContext 接口的实现时,此方法返回 null。否则返回非空会话上下文。

      返回:
      绑定到此 SSL 上下文的服务会话上下文
    • getClientSessionContext

      public final SSLSessionContext  getClientSessionContext()
      返回客户端会话上下文,它表示在客户端 SSL 套接字的握手阶段可用的 SSL 会话集。

      此上下文在某些环境中可能不可用,在这种情况下此方法返回 null。例如,当底层 SSL 提供者不提供 SSLSessionContext 接口的实现时,此方法返回 null。否则返回非空会话上下文。

      返回:
      绑定到此 SSL 上下文的客户端会话上下文
    • getDefaultSSLParameters

      public final SSLParameters  getDefaultSSLParameters()
      返回 SSLParameters 的副本,指示此 SSL 上下文的默认设置。

      参数将始终将密码套件和协议数组设置为非空值。

      返回:
      具有默认设置的 SSLParameters 对象的副本
      抛出:
      UnsupportedOperationException - 如果无法获取默认 SSL 参数。
      自从:
      1.6
    • getSupportedSSLParameters

      public final SSLParameters  getSupportedSSLParameters()
      返回 SSLParameters 的副本,指示此 SSL 上下文支持的设置。

      参数将始终将密码套件和协议数组设置为非空值。

      返回:
      具有受支持设置的 SSLParameters 对象的副本
      抛出:
      UnsupportedOperationException - 如果无法获得支持的 SSL 参数。
      自从:
      1.6