模块  java.base
软件包  javax.net.ssl

Class X509ExtendedTrustManager

  • 实现的所有接口
    TrustManagerX509TrustManager

    public abstract class X509ExtendedTrustManagerextends Objectimplements X509TrustManager
    X509TrustManager接口的扩展,支持SSL / TLS / DTLS连接敏感信任管理。

    为了防止中间人攻击,可以进行主机名检查以验证最终实体证书中的主机名是否与目标主机名匹配。 TLS / DTLS不需要这样的检查,但是一些协议超过TLS / DTLS(例如HTTPS)。 在早期版本的JDK中,证书链检查是在SSL / TLS / DTLS层完成的,主机名验证检查是在TLS / DTLS层上完成的。 此类允许在对此类的单个调用期间进行检查。

    RFC 2830定义了“LDAPS”算法的服务器标识规范。 RFC 2818定义了“HTTPS”算法的服务器标识和客户端标识规范。

    从以下版本开始:
    1.7
    另请参见:
    X509TrustManagerHostnameVerifier
    • 构造方法详细信息

      • X509ExtendedTrustManager

        public X509ExtendedTrustManager()
    • 方法详细信息

      • 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参数是socket的实例,并且SSLParameters的端点识别算法非空, SSLParameters防止中间人攻击,应检查socket连接到的地址与对等方的身份进行检查。终端实体X509证书,在端点识别算法中指定。

        如果socket参数的实例SSLSocket ,和的算法约束SSLParameters非空,在认证路径中的每个证书,领域,如主体公钥,签名算法,密钥使用,扩展密钥用法等。需要符合此套接字上的算法约束。

        参数
        chain - 对等证书链
        authType - 使用的密钥交换算法
        socket - 用于此连接的套接字。 此参数可以为null,表示实现不需要检查ssl参数
        异常
        IllegalArgumentException -如果null或零长度的数组被传递在用于 chain参数,或者如果空或零长度字符串被传递在用于 authType参数
        CertificateException - 如果此TrustManager不信任证书链
        另请参见:
        SSLParameters.getEndpointIdentificationAlgorithm()SSLParameters.setEndpointIdentificationAlgorithm(String)SSLParameters.getAlgorithmConstraints()SSLParameters.setAlgorithmConstraints(AlgorithmConstraints)
      • 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 -如果null或零长度的数组被传递在用于 chain参数,或者如果空或零长度字符串被传递在用于 authType参数
        CertificateException - 如果此TrustManager不信任证书链
        另请参见:
        SSLParameters.getEndpointIdentificationAlgorithm()SSLParameters.setEndpointIdentificationAlgorithm(String)SSLParameters.getAlgorithmConstraints()SSLParameters.setAlgorithmConstraints(AlgorithmConstraints)
      • 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 - 用于此连接的引擎。 此参数可以为null,表示实现不需要检查ssl参数
        异常
        IllegalArgumentException -如果null或零长度的数组被传递在用于 chain参数,或者如果空或零长度字符串被传递在用于 authType参数
        CertificateException - 如果此TrustManager不信任证书链
        另请参见:
        SSLParameters.getEndpointIdentificationAlgorithm()SSLParameters.setEndpointIdentificationAlgorithm(String)SSLParameters.getAlgorithmConstraints()SSLParameters.setAlgorithmConstraints(AlgorithmConstraints)