模块 java.base

类 SSLSocketFactory

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

public abstract class SSLSocketFactory extends SocketFactory
SSLSocketFactory s 创建 SSLSocket s。
自从:
1.4
参见:
  • 构造方法详细信息

    • SSLSocketFactory

      public SSLSocketFactory()
      构造方法仅由子类使用。
  • 方法详情

    • getDefault

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

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

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

      返回:
      默认SocketFactory
      参见:
    • getDefaultCipherSuites

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

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

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

      public abstract String [] getSupportedCipherSuites()
      返回可以在 SSL 连接上启用的密码套件的名称。通常,默认情况下实际上只会启用其中的一个子集,因为此list可能包含不满足这些默认值的服务质量要求的密码套件。这样的密码套件在专门的应用程序中很有用。

      返回的数组包括来自 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