public abstract class SSLServerSocket extends ServerSocket
ServerSocket
s和提供使用协议如安全套接字层(SSL)安全服务器套接字或传输层安全(TLS)协议。
这个类的实例通常使用SSLServerSocketFactory
创建。SSLServerSocket
s的主要功能是通过accept
ing连接创建SSLSocket
s。
SSLServerSocket
s包含状态数据,通过socket创作SSLSocket
继承了几块。这些措施包括启用密码套件和协议,无论是客户端认证是必要的,以及是否应该开始创建套接字握手在客户端或服务器模式。被创造出来的SSLSocket
继承的状态可以被调用适当的方法。
ServerSocket
,
SSLSocket
Modifier | Constructor and Description |
---|---|
protected |
SSLServerSocket()
仅由子类使用。
|
protected |
SSLServerSocket(int port)
仅由子类使用。
|
protected |
SSLServerSocket(int port, int backlog)
仅由子类使用。
|
protected |
SSLServerSocket(int port, int backlog, InetAddress address)
仅由子类使用。
|
Modifier and Type | Method and Description |
---|---|
abstract String[] |
getEnabledCipherSuites()
返回当前启用的密码列表,以供新接受的连接使用。
|
abstract String[] |
getEnabledProtocols()
返回当前启用的协议的名称,以供新接受的连接使用。
|
abstract boolean |
getEnableSessionCreation()
如果新的SSL会话可能是由从该服务器套接字创建套接字建立返回true。
|
abstract boolean |
getNeedClientAuth()
如果客户端身份验证将必修的新
accept ed服务器模式
SSLSocket s返回true。
|
SSLParameters |
getSSLParameters()
返回新接受的连接效果的sslparameters。
|
abstract String[] |
getSupportedCipherSuites()
返回的密码套件可用于SSL连接启用的名字。
|
abstract String[] |
getSupportedProtocols()
返回可以使用的协议的名称。
|
abstract boolean |
getUseClientMode()
如果接受连接将SSL客户端模式返回true。
|
abstract boolean |
getWantClientAuth()
如果客户端身份验证将请求新近接受服务器模式连接返回true。
|
abstract void |
setEnabledCipherSuites(String[] suites)
设置由已接受的连接启用的密码套件。
|
abstract void |
setEnabledProtocols(String[] protocols)
通过已接受的连接启用特定的协议的控件。
|
abstract void |
setEnableSessionCreation(boolean flag)
控制是否可以通过新的SSL会话,从这个服务器套接字创建套接字的建立。
|
abstract void |
setNeedClientAuth(boolean need)
控制是否
accept ed服务器模式
SSLSockets 最初会被配置为要求客户端认证。
|
void |
setSSLParameters(SSLParameters params)
适用于sslparameters新接受连接。
|
abstract void |
setUseClientMode(boolean mode)
控制是否接受连接的SSL服务器模式(默认),或SSL客户机模式。
|
abstract void |
setWantClientAuth(boolean want)
控制是否
accept ed服务器模式
SSLSockets 最初会被配置为请求客户端认证。
|
accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, toString
protected SSLServerSocket() throws IOException
创建一个绑定的TCP Socket服务器使用默认的认证上下文。
IOException
-如果一个I / O错误创建套接字时
protected SSLServerSocket(int port) throws IOException
创建一个端口TCP Socket服务器,使用默认的认证上下文。在系统开始拒绝新的连接请求之前,连接积压默认为五十个连接队列。
对0
端口号在任意空闲端口创建套接字。
如果存在安全管理器,它的checkListen
方法被调用的port
参数以保证运行参数是允许的。这可能导致SecurityException。
port
-这听口
IOException
-如果一个I / O错误创建套接字时
SecurityException
-如果存在一个安全管理及其
checkListen
方法不允许操作。
IllegalArgumentException
如果端口外部端口的值指定的范围内,这是0和65535之间,包容。
SecurityManager.checkListen(int)
protected SSLServerSocket(int port, int backlog) throws IOException
创建一个端口TCP Socket服务器,使用默认的认证上下文指定积压的连接。
对0
端口号在任意空闲端口创建套接字。
的backlog
参数是请求的最大数量的挂起连接在插座上。它的确切的语义是实现特定的。特别是,一个实现可以处以最大长度或可以选择忽略参数的根。所提供的值应大于0
。如果是小于或等于0
,然后具体实现将使用默认。
如果存在安全管理器,它的checkListen
方法被调用的port
参数以保证运行参数是允许的。这可能导致SecurityException。
port
-这听口
backlog
请求的最大长度的传入连接队列。
IOException
-如果一个I / O错误创建套接字时
SecurityException
-如果存在一个安全管理及其
checkListen
方法不允许操作。
IllegalArgumentException
如果端口外部端口的值指定的范围内,这是0和65535之间,包容。
SecurityManager.checkListen(int)
protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException
创建一个端口TCP Socket服务器,使用默认的认证上下文指定积压的连接,以及指定一个特定的网络接口。此构造函数使用多宿主主机,如那些用于防火墙或路由器的控制界面,通过网络提供服务。
如果存在安全管理器,它的checkListen
方法被调用的port
参数以保证运行参数是允许的。这可能导致SecurityException。
对0
端口号在任意空闲端口创建套接字。
的backlog
参数是请求的最大数量的挂起连接在插座上。它的确切的语义是实现特定的。特别是,一个实现可以处以最大长度或可以选择忽略参数的根。所提供的值应大于0
。如果是小于或等于0
,然后具体实现将使用默认。
如果地址是空的,它会默认接受任何/所有本地地址连接。
port
-这听口
backlog
请求的最大长度的传入连接队列。
address
-地址的网络接口通过连接将被接受
IOException
-如果一个I / O错误创建套接字时
SecurityException
-如果存在一个安全管理及其
checkListen
方法不允许操作。
IllegalArgumentException
如果端口外部端口的值指定的范围内,这是0和65535之间,包容。
SecurityManager.checkListen(int)
public abstract String[] getEnabledCipherSuites()
如果这个列表没有被显式修改,一个系统提供的默认保证了最低质量的服务在所有启用的密码套件。
有几个原因,为什么一个启用的密码套件可能不会被使用。例如:服务器可能没有相应的私钥可以使用或密码套件可能是匿名的,排除客户使用验证,而服务器套接字已被告知需要那种认证。
getSupportedCipherSuites()
,
setEnabledCipherSuites(String [])
public abstract void setEnabledCipherSuites(String[] suites)
密码套件必须被列为支持getsupportedciphersuites()。继成功调用这个方法,只有在suites
参数上市套房都能使用。
套房需要认证信息在这个ServerSocket的认证上下文不可用,将不会在任何情况下,即使他们启用。
SSLSocket
s返回accept()
继承此设置。
suites
名称的所有密码套件使
IllegalArgumentException
-当一个或多个密码的参数命名不支持,或者当参数为空。
getSupportedCipherSuites()
,
getEnabledCipherSuites()
public abstract String[] getSupportedCipherSuites()
通常情况下,只有一个子集,这些将实际启用默认情况下,因为这个列表可能包括密码套件,不符合质量的服务要求,这些默认。这种密码套件在专门的应用程序中是有用的。
getEnabledCipherSuites()
,
setEnabledCipherSuites(String [])
public abstract String[] getSupportedProtocols()
getEnabledProtocols()
,
setEnabledProtocols(String [])
public abstract String[] getEnabledProtocols()
getSupportedProtocols()
,
setEnabledProtocols(String [])
public abstract void setEnabledProtocols(String[] protocols)
该协议必须被列为支持getsupportedprotocols()。继成功调用这个方法,只有在protocols
参数上市协议能使用。
SSLSocket
s返回accept()
继承此设置。
protocols
名称的所有协议,使。
IllegalArgumentException
-当一个或更多的协议参数的命名是不支持或当协议参数为空。
getEnabledProtocols()
,
getSupportedProtocols()
public abstract void setNeedClientAuth(boolean need)
accept
ed服务器模式
SSLSockets
最初会被配置为要求客户端认证。
套接字的客户端身份验证设置为以下几个:
不像setWantClientAuth(boolean)
,如果接受的套接字的选项设置和客户端不提供关于本身,认证信息谈判将停止,连接将被删除。
调用此方法重写这个方法或setWantClientAuth(boolean)
做出任何以前的设置。
最初继承的设置可以通过调用SSLSocket.setNeedClientAuth(boolean)
或SSLSocket.setWantClientAuth(boolean)
重写。
need
-设置为true,如果客户需要身份验证,或假如果没有客户端认证要求。
getNeedClientAuth()
,
setWantClientAuth(boolean)
,
getWantClientAuth()
,
setUseClientMode(boolean)
public abstract boolean getNeedClientAuth()
accept
ed服务器模式
SSLSocket
s返回true。
最初继承的设置可以通过调用SSLSocket.setNeedClientAuth(boolean)
或SSLSocket.setWantClientAuth(boolean)
重写。
setNeedClientAuth(boolean)
,
setWantClientAuth(boolean)
,
getWantClientAuth()
,
setUseClientMode(boolean)
public abstract void setWantClientAuth(boolean want)
accept
ed服务器模式
SSLSockets
最初会被配置为请求客户端认证。
套接字的客户端身份验证设置为以下几个:
不像setNeedClientAuth(boolean)
,如果接受的套接字的选项设置和客户端不提供自己的认证信息,谈判将继续。
调用此方法重写这个方法或setNeedClientAuth(boolean)
做出任何以前的设置。
最初继承的设置可以通过调用SSLSocket.setNeedClientAuth(boolean)
或SSLSocket.setWantClientAuth(boolean)
重写。
want
-设置为true,如果要求客户端身份验证,或假如果没有客户端认证要求。
getWantClientAuth()
,
setNeedClientAuth(boolean)
,
getNeedClientAuth()
,
setUseClientMode(boolean)
public abstract boolean getWantClientAuth()
最初继承的设置可以通过调用SSLSocket.setNeedClientAuth(boolean)
或SSLSocket.setWantClientAuth(boolean)
重写。
setWantClientAuth(boolean)
,
setNeedClientAuth(boolean)
,
getNeedClientAuth()
,
setUseClientMode(boolean)
public abstract void setUseClientMode(boolean mode)
服务器通常对自己进行身份验证,而客户端不需要这样做。
在罕见的情况下,TCP服务器需要在SSL客户端模式对新接受的连接。例如,FTP客户端获得服务器套接字和听有反向连接从服务器。一个FTP客户端将使用一个sslserversocket“客户端”模式接受反向连接,FTP服务器使用SSLSocket“客户端”的发起连接的失效模式。由此产生的握手过程中,现有的SSL会话可以重复使用。
SSLSocket
s返回accept()
继承此设置。
mode
-如果新接受的连接应该使用SSL客户端模式。
getUseClientMode()
public abstract boolean getUseClientMode()
setUseClientMode(boolean)
public abstract void setEnableSessionCreation(boolean flag)
SSLSocket
s返回accept()
继承此设置。
flag
真表明会话可能被创造;这是默认的。错误表示必须恢复现有会话。
getEnableSessionCreation()
public abstract boolean getEnableSessionCreation()
setEnableSessionCreation(boolean)
public SSLParameters getSSLParameters()
setSSLParameters(SSLParameters)
public void setSSLParameters(SSLParameters params)
这意味着:
params.getCipherSuites()
非空,setEnabledCipherSuites()
叫做价值。params.getProtocols()
非空,setEnabledProtocols()
叫做价值。params.getNeedClientAuth()
或params.getWantClientAuth()
返回true
,setNeedClientAuth(true)
和setWantClientAuth(true)
称,分别称为;否则setWantClientAuth(false)
。params.getServerNames()
是非空的,插座与价值配置的服务器名称。params.getSNIMatchers()
是非空的,插座与价值配置SNI的匹配。params
-参数
IllegalArgumentException
-如果setenabledciphersuites()或setenabledprotocols()调用失败
getSSLParameters()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.