Module java.base
Package javax.net.ssl

Class X509ExtendedTrustManager

java.lang.Object
javax.net.ssl.X509ExtendedTrustManager
所有实现的接口:
TrustManager, X509TrustManager

public abstract class X509ExtendedTrustManager extends Object implements 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 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信任
      参见: