模块  java.base
软件包  javax.net.ssl

Class SSLContext


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

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

    • TLSv1
    • TLSv1.1
    • TLSv1.2
    这些协议在Java安全标准算法名称规范的SSLContext section中描述。 请参阅实现的发行文档,以了解是否支持任何其他算法。
    从以下版本开始:
    1.4
    • 构造方法详细信息

      • SSLContext

        protected SSLContext​(SSLContextSpi contextSpi,
                             Provider provider,
                             String protocol)
        创建SSLContext对象。
        参数
        contextSpi - 代表
        provider - 提供者
        protocol - 协议
    • 方法详细信息

      • setDefault

        public static void setDefault​(SSLContext context)
        设置默认SSL上下文。 它将在随后的getDefault()调用中返回 默认上下文必须立即可用,不需要initialization
        参数
        context - SSLContext
        异常
        NullPointerException - 如果context为null
        SecurityException - 如果存在安全管理器且其 checkPermission方法不允许 SSLPermission("setDefaultSSLContext")
        从以下版本开始:
        1.6
      • getInstance

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

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

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

        Implementation Note:
        JDK Reference Implementation还使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        protocol - 请求的协议的标准名称。 有关标准协议名称的信息,请参见Java Security Standard Algorithm Names Specification中的SSLContext部分。
        结果
        新的 SSLContext对象
        异常
        NoSuchAlgorithmException - 如果没有 Provider支持指定协议的 SSLContextSpi实现
        NullPointerException - 如果 protocolnull
        另请参见:
        Provider
      • 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
        初始化此上下文。 前两个参数中的任何一个都可以为null,在这种情况下,将搜索已安装的安全提供程序以寻找适当工厂的最高优先级实现。 同样,安全随机参数可以为空,在这种情况下将使用默认实现。

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

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

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

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

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

        结果
        SSLEngine对象
        异常
        UnsupportedOperationException - 如果基础提供程序未实现该操作。
        IllegalStateException - 如果SSLContextImpl需要初始化并且尚未调用 init()
        从以下版本开始:
        1.5
      • createSSLEngine

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

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

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

        参数
        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