Module java.base
Package javax.net.ssl

Class SSLSocketFactory

java.lang.Object
javax.net.SocketFactory
javax.net.ssl.SSLSocketFactory

public abstract class SSLSocketFactory extends SocketFactory
SSLSocketFactory创建SSLSocket
自1.4版本起:
1.4
参见:
  • Constructor Details

    • SSLSocketFactory

      public SSLSocketFactory()
      构造函数仅供子类使用。
  • Method Details

    • getDefault

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

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

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

      返回:
      默认的SocketFactory
      参见:
    • getDefaultCipherSuites

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

      返回的数组包括来自Java安全标准算法名称规范的JSSE密码套件名称列表中的标准密码套件,还可能包括提供程序支持的其他密码套件。

      返回:
      默认启用的密码套件数组
      参见:
    • getSupportedCipherSuites

      public abstract String[] getSupportedCipherSuites()
      返回可以在SSL连接上启用的密码套件的名称。通常,默认情况下只有这些密码套件的子集会被启用,因为此列表可能包括不符合这些默认要求的服务质量的密码套件。这样的密码套件在专用应用程序中很有用。

      返回的数组包括来自Java安全标准算法名称规范的JSSE密码套件名称列表中的标准密码套件,还可能包括提供程序支持的其他密码套件。

      返回:
      密码套件名称数组
      参见:
    • 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)扩展(请参阅TLS扩展(RFC6066)第3节)。在调用此方法之前,已从基础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版本起:
      1.8