Module  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 - 如果上下文为空
        SecurityException - 如果存在安全管理员,并且其 checkPermission方法不允许 SSLPermission("setDefaultSSLContext")
        从以下版本开始:
        1.6
      • getInstance

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

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

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

        Implementation Note:
        JDK参考实现另外使用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 - 认证密钥的来源或空值
        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​()
        返回指示此SSL上下文默认设置的SSLParameters的副本。

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

        结果
        具有默认设置的SSLParameters对象的副本
        异常
        UnsupportedOperationException - 如果无法获取默认的SSL参数。
        从以下版本开始:
        1.6
      • getSupportedSSLParameters

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

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

        结果
        具有支持的设置的SSLParameters对象的副本
        异常
        UnsupportedOperationException - 如果无法获得支持的SSL参数。
        从以下版本开始:
        1.6