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

Class SSLSocketFactory


  • public abstract class SSLSocketFactoryextends SocketFactory
    SSLSocketFactory s创建 SSLSocket s。
    从以下版本开始:
    1.4
    另请参见:
    SSLSocket
    • 构造方法详细信息

      • SSLSocketFactory

        public SSLSocketFactory()
        构造函数仅由子类使用。
    • 方法详细信息

      • getDefault

        public static SocketFactory getDefault()
        返回默认的SSL套接字工厂。

        第一次调用此方法时,将检查安全属性“ssl.SocketFactory.provider”。 如果它为非null,则加载并实例化该名称的类。 如果成功并且该对象是SSLSocketFactory的实例,则它将成为默认的SSL套接字工厂。

        否则,此方法返回SSLContext.getDefault().getSocketFactory() 如果该调用失败,则返回一个不起作用的工厂。

        结果
        默认 SocketFactory
        另请参见:
        SSLContext.getDefault()
      • getDefaultCipherSuites

        public abstract String[] getDefaultCipherSuites()
        返回默认启用的密码套件列表。 除非启用了不同的列表,否则SSL连接上的握手将使用其中一个密码套件。 这些默认值的最低服务质量要求机密性保护和服务器身份验证(即,没有匿名密码套件)。

        返回的数组包括Java Cryptography体系结构标准算法名称文档的JSSE Cipher Suite Names部分中标准密码套件名称列表中的密码套件,还可能包括提供程序支持的其他密码套件。

        结果
        默认情况下启用的密码套件数组
        另请参见:
        getSupportedCipherSuites()
      • getSupportedCipherSuites

        public abstract String[] getSupportedCipherSuites()
        返回可以在SSL连接上启用的密码套件的名称。 通常,默认情况下实际上仅启用其中的一部分,因为此列表可能包括不符合这些默认值的服务质量要求的密码套件。 这种密码套件在专门的应用中很有用。

        返回的数组包括Java Cryptography体系结构标准算法名称文档的JSSE Cipher Suite Names部分中的标准密码套件名称列表中的密码套件,还可能包括提供程序支持的其他密码套件。

        结果
        一组密码套件名称
        另请参见:
        getDefaultCipherSuites()
      • createSocket

        public abstract Socket createSocket​(Socket s,                                    String host,                                    int port,                                    boolean autoClose)                             throws IOException
        返回在给定端口上连接到指定主机的现有套接字上分层的套接字。 通过代理隧道传输SSL或在现有套接字上协商使用SSL时,可以使用此构造函数。 主机和端口引用逻辑对等目标。 使用为此工厂建立的套接字选项配置此套接字。
        参数
        s - 现有套接字
        host - 服务器主机
        port - 服务器端口
        autoClose - 关闭此套接字时关闭底层套接字
        结果
        连接到指定主机和端口的套接字
        异常
        IOException - 如果在创建套接字时发生I / O错误
        NullPointerException - 如果参数s为null
      • createSocket

        public Socket createSocket​(Socket s,                           InputStream consumed,                           boolean autoClose)                    throws IOException
        在现有连接套接字上创建分层服务器模式Socket ,并且能够读取已从Socket的基础InputStream使用/删除的数据

        此方法可由需要观察入站数据但仍创建有效SSL / TLS连接的服务器应用程序使用:例如,检查服务器名称指示(SNI)扩展(请参阅第45条,共TLS Extensions (RFC6066)条 )。 在调用此方法之前,应将已从基础InputStream删除的数据加载到consumed流中,可能使用ByteArrayInputStream 当此Socket开始握手时,它将读取consumed所有数据,直到达到EOF ,然后像往常一样从底层InputStream读取所有其他数据。

        返回的套接字使用为此工厂建立的套接字选项进行配置,并设置为在握手时使用服务器模式(请参阅SSLSocket.setUseClientMode(boolean) )。

        参数
        s - 现有套接字
        consumed - 已从现有Socket InputStream删除的已消耗入站网络数据。 如果没有删除数据,则此参数可能为null
        autoClose - 关闭此套接字时关闭底层套接字。
        结果
        Socket符合为此工厂建立的套接字选项
        异常
        IOException - 如果在创建套接字时发生I / O错误
        UnsupportedOperationException - 如果基础提供程序未实现该操作
        NullPointerException - 如果 snull
        从以下版本开始:
        1.8