模块 java.base

类 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”算法定义了服务标识和客户端标识规范。

自从:
1.7
参见:
  • 构造方法详细信息

    • X509ExtendedTrustManager

      public X509ExtendedTrustManager()
      子类调用的构造方法。
  • 方法详情

    • checkClientTrusted

      public abstract void checkClientTrusted(X509Certificate [] chain, String  authType, Socket  socket) throws CertificateException
      给定对等方提供的部分或完整证书链,根据身份验证类型和 ssl 参数构建和验证证书路径。

      身份验证类型由实际使用的证书决定。例如,如果使用 RSAPublicKey,则 authType 应为“RSA”。检查区分大小写。

      如果 socket 参数是 SSLSocket 的一个实例,并且 SSLParameters 的端点识别算法是非空的,为了防止中间人攻击,应该检查 socket 连接到的地址与 peer 中提供的身份端点识别算法中指定的端点实体 X509 证书。

      如果socket参数是SSLSocket 的一个实例,并且SSLParameters的算法约束非空,对于证书路径中的每个证书,主题公钥、签名算法、密钥用途、扩展密钥用途等字段。需要符合此套接字上的算法约束。

      参数:
      chain - 对等证书链
      authType - 使用的密钥交换算法
      socket - 用于此连接的套接字。该参数可以为空,表示实现不需要检查ssl参数
      抛出:
      IllegalArgumentException - 如果为 chain 参数传入空值或零长度数组,或者为 authType 参数传入空值或零长度字符串
      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,而当使用来自服务证书的密钥时,authType 应为 RSA。检查区分大小写。

      如果 socket 参数是 SSLSocket 的一个实例,并且 SSLParameters 的端点识别算法是非空的,为了防止中间人攻击,应该检查 socket 连接到的地址与 peer 中提供的身份端点识别算法中指定的端点实体 X509 证书。

      如果socket参数是SSLSocket 的一个实例,并且SSLParameters的算法约束非空,对于证书路径中的每个证书,主题公钥、签名算法、密钥用途、扩展密钥用途等字段。需要符合此套接字上的算法约束。

      参数:
      chain - 对等证书链
      authType - 使用的密钥交换算法
      socket - 用于此连接的套接字。该参数可以为空,表示实现不需要检查ssl参数
      抛出:
      IllegalArgumentException - 如果为 chain 参数传入空值或零长度数组,或者为 authType 参数传入空值或零长度字符串
      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 - 用于此连接的引擎。该参数可以为空,表示实现不需要检查ssl参数
      抛出:
      IllegalArgumentException - 如果为 chain 参数传入空值或零长度数组,或者为 authType 参数传入空值或零长度字符串
      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,而当使用来自服务证书的密钥时,authType 应为 RSA。检查区分大小写。

      如果engine参数可用,并且SSLParameters的端点识别算法是非空的,为了防止中间人攻击,engine连接到的地址应该与端点中呈现的对等体身份进行检查-实体 X509 证书,如端点识别算法中所指定。

      如果engine参数可用,且SSLParameters的算法约束非空,对于证书路径中的每个证书,主题公钥、签名算法、密钥用途、扩展密钥用途等字段都需要符合到此引擎上的算法约束。

      参数:
      chain - 对等证书链
      authType - 使用的密钥交换算法
      engine - 用于此连接的引擎。该参数可以为空,表示实现不需要检查ssl参数
      抛出:
      IllegalArgumentException - 如果为 chain 参数传入空值或零长度数组,或者为 authType 参数传入空值或零长度字符串
      CertificateException - 如果证书链不受此 TrustManager 信任
      参见: