- 所有实现的接口:
-
TrustManager
,X509TrustManager
X509TrustManager
接口的扩展,以支持SSL/TLS/DTLS连接敏感的信任管理。
为了防止中间人攻击,可以进行主机名检查,以验证终端实体证书中的主机名是否与目标主机名匹配。TLS/DTLS不需要进行此类检查,但某些在TLS/DTLS上运行的协议(如HTTPS)需要。在JDK的早期版本中,证书链检查是在SSL/TLS/DTLS层完成的,主机名验证检查是在TLS/DTLS上的层完成的。此类允许在单个调用此类时进行检查。
RFC 2830定义了“LDAPS”算法的服务器标识规范。RFC 2818定义了“HTTPS”算法的服务器标识和客户端标识规范。
- 自 JDK 版本:
- 1.7
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
checkClientTrusted
(X509Certificate[] chain, String authType, Socket socket) 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。abstract void
checkClientTrusted
(X509Certificate[] chain, String authType, SSLEngine engine) 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。abstract void
checkServerTrusted
(X509Certificate[] chain, String authType, Socket socket) 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。abstract void
checkServerTrusted
(X509Certificate[] chain, String authType, SSLEngine engine) 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface javax.net.ssl.X509TrustManager
checkClientTrusted, checkServerTrusted, getAcceptedIssuers
-
Constructor Details
-
X509ExtendedTrustManager
public X509ExtendedTrustManager()子类调用的构造函数。
-
-
Method Details
-
checkClientTrusted
public abstract void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。认证类型由实际使用的证书确定。例如,如果使用RSAPublicKey,则authType应为"RSA"。检查区分大小写。
如果
socket
参数是SSLSocket
的实例,并且SSLParameters
的端点标识算法非空,则为了防止中间人攻击,应检查socket
连接到的地址是否与终端实体X509证书中呈现的对等方身份匹配,如端点标识算法中指定的那样。如果
socket
参数是SSLSocket
的实例,并且SSLParameters
的算法约束非空,则对于证书链中的每个证书,诸如主题公钥、签名算法、密钥用途、扩展密钥用途等字段需要符合此套接口上的算法约束。- 参数:
-
chain
- 对等方证书链 -
authType
- 使用的密钥交换算法 -
socket
- 用于此连接的套接字。此参数可以为null,表示实现无需检查SSL参数 - 抛出:
-
IllegalArgumentException
- 如果对chain
参数传递了null或零长度数组,或者对authType
参数传递了null或零长度字符串 -
CertificateException
- 如果证书链未被此TrustManager信任 - 参见:
-
checkServerTrusted
public abstract void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。认证类型是密码套件的密钥交换算法部分,表示为字符串,例如"RSA","DHE_DSS"。注意:对于某些可导出的密码套件,密钥交换算法在握手期间在运行时确定。例如,对于TLS_RSA_EXPORT_WITH_RC4_40_MD5,当使用临时RSA密钥进行密钥交换时,authType应为RSA_EXPORT,当使用服务器证书中的密钥时,应为RSA。检查区分大小写。
如果
socket
参数是SSLSocket
的实例,并且SSLParameters
的端点标识算法非空,则为了防止中间人攻击,应检查socket
连接到的地址是否与终端实体X509证书中呈现的对等方身份匹配,如端点标识算法中指定的那样。如果
socket
参数是SSLSocket
的实例,并且SSLParameters
的算法约束非空,则对于证书链中的每个证书,诸如主题公钥、签名算法、密钥用途、扩展密钥用途等字段需要符合此套接口上的算法约束。- 参数:
-
chain
- 对等方证书链 -
authType
- 使用的密钥交换算法 -
socket
- 用于此连接的套接字。此参数可以为null,表示实现无需检查SSL参数 - 抛出:
-
IllegalArgumentException
- 如果对chain
参数传递了null或零长度数组,或者对authType
参数传递了null或零长度字符串 -
CertificateException
- 如果证书链未被此TrustManager信任 - 参见:
-
checkClientTrusted
public abstract void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException 根据对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。认证类型由实际使用的证书确定。例如,如果使用RSAPublicKey,则authType应为"RSA"。检查区分大小写。
如果
engine
参数可用,并且SSLParameters
的端点标识算法非空,则为了防止中间人攻击,应检查engine
连接到的地址是否与终端实体X509证书中呈现的对等方身份匹配,如端点标识算法中指定的那样。如果
engine
参数可用,并且SSLParameters
的算法约束非空,则对于证书链中的每个证书,诸如主题公钥、签名算法、密钥用途、扩展密钥用途等字段需要符合此套接口上的算法约束。- 参数:
-
chain
- 对等方证书链 -
authType
- 使用的密钥交换算法 -
engine
- 用于此连接的引擎。此参数可以为null,表示实现无需检查SSL参数 - 抛出:
-
IllegalArgumentException
- 如果对chain
参数传递了null或零长度数组,或者对authType
参数传递了null或零长度字符串 -
CertificateException
- 如果证书链未被此TrustManager信任 - 参见:
-
checkServerTrusted
public abstract void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException 给定对等方提供的部分或完整证书链,基于认证类型和SSL参数构建和验证证书路径。认证类型是密码套件的密钥交换算法部分表示为字符串,例如"RSA","DHE_DSS"。注意:对于一些可导出的密码套件,密钥交换算法在握手期间在运行时确定。例如,对于TLS_RSA_EXPORT_WITH_RC4_40_MD5,当使用临时RSA密钥进行密钥交换时,authType应为RSA_EXPORT,当使用服务器证书中的密钥时,应为RSA。检查区分大小写。
如果
engine
参数可用,并且SSLParameters
的端点识别算法非空,为了防止中间人攻击,应该检查engine
连接到的地址是否与端点识别算法中指定的对等方实体X509证书中呈现的对等方身份匹配。如果
engine
参数可用,并且SSLParameters
的算法约束非空,对于证书路径中的每个证书,诸如主题公钥、签名算法、密钥用途、扩展密钥用途等字段需要符合此引擎上放置的算法约束。- 参数:
-
chain
- 对等方证书链 -
authType
- 使用的密钥交换算法 -
engine
- 用于此连接的引擎。此参数可以为null,表示实现无需检查ssl参数 - 抛出:
-
IllegalArgumentException
- 如果对chain
参数传递了null或零长度数组,或者对authType
参数传递了null或零长度字符串 -
CertificateException
- 如果证书链未被此TrustManager信任 - 参见:
-