public class SSLParameters
extends Object
java.lang.Object | |
↳ | javax.net.ssl.SSLParameters |
封装SSL / TLS连接的参数。 参数是在SSL / TLS握手中要接受的密码组列表,要允许的协议列表,SSL / TLS握手期间的端点识别算法,服务器名称指示(SNI),算法约束以及SSL / TLS服务器应请求或要求客户端认证等。
可以通过此类中的构造函数创建SSLParameters。 对象也可以使用所获得的getSSLParameters()
的方法SSLSocket
和SSLServerSocket
和SSLEngine
或getDefaultSSLParameters()
种getSupportedSSLParameters()
的方法SSLContext
。
SSLParameters可以通过方法 SSLSocket.setSSLParameters()
和 SSLServerSocket.setSSLParameters()
和 SSLEngine.setSSLParameters()
应用于连接。
也可以看看:
Public constructors |
|
---|---|
SSLParameters() 构造SSLParameters。 |
|
SSLParameters(String[] cipherSuites) 从指定的密码套件数组构造SSLParameters。 |
|
SSLParameters(String[] cipherSuites, String[] protocols) 从指定的密码套件和协议数组构造SSLParameters。 |
Public methods |
|
---|---|
AlgorithmConstraints |
getAlgorithmConstraints() 返回加密算法约束。 |
String[] |
getCipherSuites() 返回密码组数组的副本;如果没有设置,则返回null。 |
String |
getEndpointIdentificationAlgorithm() 获取端点识别算法。 |
boolean |
getNeedClientAuth() 返回是否需要客户端身份验证。 |
String[] |
getProtocols() 返回协议数组的副本,如果没有设置,则返回null。 |
final Collection<SNIMatcher> |
getSNIMatchers() 返回 |
final List<SNIServerName> |
getServerNames() 返回 |
final boolean |
getUseCipherSuitesOrder() 返回是否应该遵守本地密码套件首选项。 |
boolean |
getWantClientAuth() 返回是否应请求客户端身份验证。 |
void |
setAlgorithmConstraints(AlgorithmConstraints constraints) 设置加密算法约束,除了由运行时环境配置的约束之外,还将使用这些约束。 |
void |
setCipherSuites(String[] cipherSuites) 设置密码套件的数组。 |
void |
setEndpointIdentificationAlgorithm(String algorithm) 设置端点识别算法。 |
void |
setNeedClientAuth(boolean needClientAuth) 设置是否需要客户端身份验证。 |
void |
setProtocols(String[] protocols) 设置协议数组。 |
final void |
setSNIMatchers(Collection<SNIMatcher> matchers) 设置服务器名称指示(SNI)参数的 |
final void |
setServerNames(List<SNIServerName> serverNames) 设置服务器名称指示(SNI)参数的所需 |
final void |
setUseCipherSuitesOrder(boolean honorOrder) 设置是否应该遵守本地密码套件首选项。 |
void |
setWantClientAuth(boolean wantClientAuth) 设置是否应请求客户端身份验证。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
SSLParameters ()
构造SSLParameters。
cipherSuites,协议,加密算法约束,端点标识算法,服务器名称和服务器名称匹配器的值设置为 null
,useCipherSuitesOrder,wantClientAuth和needClientAuth设置为 false
。
SSLParameters (String[] cipherSuites)
从指定的密码套件数组构造SSLParameters。
调用这个构造函数等同于调用 setCipherSuites(cipherSuites);
后面的无参数构造 setCipherSuites(cipherSuites);
。
Parameters | |
---|---|
cipherSuites |
String : the array of ciphersuites (or null) |
SSLParameters (String[] cipherSuites, String[] protocols)
从指定的密码套件和协议数组构造SSLParameters。
调用这个构造函数等同于调用 setCipherSuites(cipherSuites); setProtocols(protocols);
后面的无参数构造 setCipherSuites(cipherSuites); setProtocols(protocols);
。
Parameters | |
---|---|
cipherSuites |
String : the array of ciphersuites (or null) |
protocols |
String : the array of protocols (or null) |
AlgorithmConstraints getAlgorithmConstraints ()
返回加密算法约束。
Returns | |
---|---|
AlgorithmConstraints |
the cryptographic algorithm constraints, or null if the constraints have not been set |
String[] getCipherSuites ()
返回密码组数组的副本;如果没有设置,则返回null。
Returns | |
---|---|
String[] |
a copy of the array of ciphersuites or null if none have been set. |
String getEndpointIdentificationAlgorithm ()
获取端点识别算法。
Returns | |
---|---|
String |
the endpoint identification algorithm, or null if none has been set. |
boolean getNeedClientAuth ()
返回是否需要客户端身份验证。
Returns | |
---|---|
boolean |
whether client authentication should be required. |
String[] getProtocols ()
返回协议数组的副本,如果没有设置,则返回null。
Returns | |
---|---|
String[] |
a copy of the array of protocols or null if none have been set. |
Collection<SNIMatcher> getSNIMatchers ()
返回 Collection
包含所有 SNIMatcher
•服务器名称指示的(SNI)的参数,如果没有则为null已设置。
此方法仅对在服务器模式下运行的 SSLSocket
s或 SSLEngine
有用。
为了获得更好的互操作性,提供商通常不会定义默认匹配器,以便默认情况下服务器将忽略SNI扩展并继续握手。
Returns | |
---|---|
Collection<SNIMatcher> |
null or an immutable collection of non-null SNIMatcher s |
List<SNIServerName> getServerNames ()
返回 List
其中包含服务器名称指示(SNI)参数的所有 SNIServerName
,如果没有设置,则返回null。
此方法仅对在客户端模式下运行的 SSLSocket
或 SSLEngine
有用。
对于SSL / TLS连接,底层SSL / TLS提供程序可以为某个服务器名称类型指定默认值。 在客户端模式下,建议默认情况下,只要服务器可以通过支持的服务器名称类型进行定位,提供程序就应该包含服务器名称指示。
建议供应商创建初始化时默认的服务器名称主治SSLSocket
/ SSLEngine
秒。 在以下示例中,服务器名称可以由已使用主机名“www.example.com”初始化并输入SNI_HOST_NAME
的实例SNIHostName
来表示。
Socket socket = sslSocketFactory.createSocket("www.example.com", 443);or
SSLEngine engine = sslContext.createSSLEngine("www.example.com", 443);
Returns | |
---|---|
List<SNIServerName> |
null or an immutable list of non-null SNIServerName s |
也可以看看:
boolean getUseCipherSuitesOrder ()
返回是否应该遵守本地密码套件首选项。
Returns | |
---|---|
boolean |
whether local cipher suites order in #getCipherSuites should be honored during SSL/TLS handshaking. |
boolean getWantClientAuth ()
返回是否应请求客户端身份验证。
Returns | |
---|---|
boolean |
whether client authentication should be requested. |
void setAlgorithmConstraints (AlgorithmConstraints constraints)
设置加密算法约束,除了由运行时环境配置的约束之外,还将使用这些约束。
如果参数 constraints
非空,则SSL / TLS握手中使用的每个加密算法,密钥和算法参数都必须由约束条件允许。
Parameters | |
---|---|
constraints |
AlgorithmConstraints : the algorithm constraints (or null) |
void setCipherSuites (String[] cipherSuites)
设置密码套件的数组。
Parameters | |
---|---|
cipherSuites |
String : the array of ciphersuites (or null) |
void setEndpointIdentificationAlgorithm (String algorithm)
设置端点识别算法。
如果参数algorithm
非空或非空,则必须在SSL / TLS握手过程中处理端点标识/验证过程。 这是为了防止中间人攻击。
Parameters | |
---|---|
algorithm |
String : The standard string name of the endpoint identification algorithm (or null). See Appendix A in the Java Cryptography Architecture API Specification & Reference for information about standard algorithm names. |
也可以看看:
void setNeedClientAuth (boolean needClientAuth)
设置是否需要客户端身份验证。 调用此方法将清除wantClientAuth
标志。
Parameters | |
---|---|
needClientAuth |
boolean : whether client authentication should be required |
void setProtocols (String[] protocols)
设置协议数组。
Parameters | |
---|---|
protocols |
String : the array of protocols (or null) |
void setSNIMatchers (Collection<SNIMatcher> matchers)
设置服务器名称指示(SNI)参数的 SNIMatcher
。
此方法仅适用于在服务器模式下运行的 SSLSocket
或 SSLEngine
。
请注意, matchers
集合已被克隆以防止后续修改。
Parameters | |
---|---|
matchers |
Collection : the collection of SNIMatcher s (or null) |
Throws | |
---|---|
NullPointerException |
if the matchers contains null element |
IllegalArgumentException |
if the matchers contains more than one name of the same name type |
也可以看看:
void setServerNames (List<SNIServerName> serverNames)
设置服务器名称指示(SNI)参数的所需 SNIServerName
。
此方法仅适用于在客户端模式下运行的 SSLSocket
或 SSLEngine
。
请注意, serverNames
列表已克隆以防止后续修改。
Parameters | |
---|---|
serverNames |
List : the list of desired SNIServerName s (or null) |
Throws | |
---|---|
NullPointerException |
if the serverNames contains null element |
IllegalArgumentException |
if the serverNames contains more than one name of the same name type |
也可以看看:
void setUseCipherSuitesOrder (boolean honorOrder)
设置是否应该遵守本地密码套件首选项。
Parameters | |
---|---|
honorOrder |
boolean : whether local cipher suites order in #getCipherSuites should be honored during SSL/TLS handshaking. |
也可以看看:
void setWantClientAuth (boolean wantClientAuth)
设置是否应请求客户端身份验证。 调用此方法将清除needClientAuth
标志。
Parameters | |
---|---|
wantClientAuth |
boolean : whether client authentication should be requested |