モジュール java.base
パッケージ javax.net.ssl

クラスX509ExtendedTrustManager

java.lang.Object
javax.net.ssl.X509ExtendedTrustManager
すべての実装されたインタフェース:
TrustManager, X509TrustManager

public abstract class X509ExtendedTrustManager
extends Object
implements X509TrustManager
SSL/TLS/DTLS接続センシティブな信頼管理をサポートするためのX509TrustManagerインタフェースの拡張。

man-in-the-middle攻撃を防ぐために、ホスト名チェックを行なって、エンド・エンティティ証明書のホスト名がターゲットのホスト名と一致することを検証できます。 TLS/DTLSはそのようなチェックを必要としませんが、TLS/DTLS (HTTPSなど)上のいくつかのプロトコルはそうしています。 以前のバージョンのJDKでは、証明書チェインのチェックはSSL/TLS/DTLSレイヤーで行われ、ホスト名検証チェックはTLS/DTLS上のレイヤーで行われました。 このクラスを1回呼び出すと、そのチェックを行うことができます。

RFC 2830には、「LDAPS」アルゴリズムのサーバー識別仕様が定義されています。 RFC 2818には、「HTTPS」アルゴリズムのサーバー識別仕様とクライアント識別仕様の両方が定義されています。

導入されたバージョン:
1.7
関連項目:
X509TrustManager, HostnameVerifier
  • コンストラクタの詳細

    • X509ExtendedTrustManager

      public X509ExtendedTrustManager()
  • メソッドの詳細

    • checkClientTrusted

      public abstract void checkClientTrusted​(X509Certificate[] chain, String authType, Socket socket) throws CertificateException
      ピアから部分的または完全な証明書チェーンが提供された場合に、認証タイプとSSLパラメータに基づいて証明書パスを構築して検証します。

      認証タイプは、実際に使用される証明書によって決まります。 たとえば、RSAPublicKeyを使用する場合、authTypeは"RSA"になります。 チェックでは、大文字と小文字が区別されます。

      socketパラメータがSSLSocketのインスタンスであり、SSLParametersのエンド・ポイント識別アルゴリズムが空でない場合は、man-in-the-middle攻撃を回避するために、エンド・ポイント識別アルゴリズムで指定されているように、socketの接続先のアドレスをエンド・エンティティX509証明書で提供されているピアの識別情報に対してチェックするようにしてください。

      socketパラメータがSSLSocketのインスタンスであり、SSLParametersのアルゴリズムの制約がnull以外の場合は、証明書パス内のすべての証明書について、サブジェクトの公開キー、署名アルゴリズム、キー使用法、拡張キー使用法などのフィールドが、このソケットで設定されているアルゴリズムの制約に準拠している必要があります。

      パラメータ:
      chain - ピアの証明書チェーン
      authType - 使用されるキー交換アルゴリズム
      socket - この接続に使用するソケット。 このパラメータにはnullを指定可能。これは、実装でsslパラメータをチェックする必要がないことを示す
      例外:
      IllegalArgumentException - nullまたは長さ0の配列がchainパラメータに渡された場合、あるいはnullまたは長さ0の文字列がauthTypeパラメータに渡された場合
      CertificateException - 証明書チェーンがこのTrustManagerによって信頼されていない場合
      関連項目:
      SSLParameters.getEndpointIdentificationAlgorithm(), SSLParameters.setEndpointIdentificationAlgorithm(String), SSLParameters.getAlgorithmConstraints(), SSLParameters.setAlgorithmConstraints(AlgorithmConstraints)
    • checkServerTrusted

      public abstract void checkServerTrusted​(X509Certificate[] chain, String authType, Socket socket) throws CertificateException
      ピアから部分的または完全な証明書チェーンが提供された場合に、認証タイプとSSLパラメータに基づいて証明書パスを構築して検証します。

      認証タイプは、暗号化方式群のキー交換アルゴリズムで、「RSA」や「DHE_DSS」のようにStringとして表現されます。 ノート: 一部のエクスポート可能な暗号化方式群では、キー交換アルゴリズムがハンドシェークの実行時に決定されます。 たとえば、TLS_RSA_EXPORT_WITH_RC4_40_MD5のauthTypeは、一時的なRSAキーがキー交換で使用されるときはRSA_EXPORTになり、サーバー証明書のキーが使用されるときはRSAになります。 チェックでは、大文字と小文字が区別されます。

      socketパラメータがSSLSocketのインスタンスであり、SSLParametersのエンド・ポイント識別アルゴリズムが空でない場合は、man-in-the-middle攻撃を回避するために、エンド・ポイント識別アルゴリズムで指定されているように、socketの接続先のアドレスをエンド・エンティティX509証明書で提供されているピアの識別情報に対してチェックするようにしてください。

      socketパラメータがSSLSocketのインスタンスであり、SSLParametersのアルゴリズムの制約がnull以外の場合は、証明書パス内のすべての証明書について、サブジェクトの公開キー、署名アルゴリズム、キー使用法、拡張キー使用法などのフィールドが、このソケットで設定されているアルゴリズムの制約に準拠している必要があります。

      パラメータ:
      chain - ピアの証明書チェーン
      authType - 使用されるキー交換アルゴリズム
      socket - この接続に使用するソケット。 このパラメータにはnullを指定可能。これは、実装でsslパラメータをチェックする必要がないことを示す
      例外:
      IllegalArgumentException - nullまたは長さ0の配列がchainパラメータに渡された場合、あるいはnullまたは長さ0の文字列が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のエンド・ポイント識別アルゴリズムが空でない場合は、man-in-the-middle攻撃を回避するために、エンド・ポイント識別アルゴリズムで指定されているように、engineの接続先のアドレスをエンド・エンティティX509証明書で提供されているピアの識別情報に対してチェックするようにしてください。

      engineパラメータが使用可能であり、SSLParametersのアルゴリズムの制約がnull以外である場合は、証明書パス内のすべての証明書について、サブジェクトの公開キー、署名アルゴリズム、キー使用法、拡張キー使用法などのフィールドが、このエンジンで設定されているアルゴリズムの制約に準拠している必要があります。

      パラメータ:
      chain - ピアの証明書チェーン
      authType - 使用されるキー交換アルゴリズム
      engine - この接続に使用するエンジン。 このパラメータにはnullを指定可能。これは、実装でsslパラメータをチェックする必要がないことを示す
      例外:
      IllegalArgumentException - nullまたは長さ0の配列がchainパラメータに渡された場合、あるいはnullまたは長さ0の文字列が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」のようにStringとして表現されます。 ノート: 一部のエクスポート可能な暗号化方式群では、キー交換アルゴリズムがハンドシェークの実行時に決定されます。 たとえば、TLS_RSA_EXPORT_WITH_RC4_40_MD5のauthTypeは、一時的なRSAキーがキー交換で使用されるときはRSA_EXPORTになり、サーバー証明書のキーが使用されるときはRSAになります。 チェックでは、大文字と小文字が区別されます。

      engineパラメータが使用可能であり、SSLParametersのエンド・ポイント識別アルゴリズムが空でない場合は、man-in-the-middle攻撃を回避するために、エンド・ポイント識別アルゴリズムで指定されているように、engineの接続先のアドレスをエンド・エンティティX509証明書で提供されているピアの識別情報に対してチェックするようにしてください。

      engineパラメータが使用可能であり、SSLParametersのアルゴリズムの制約がnull以外である場合は、証明書パス内のすべての証明書について、サブジェクトの公開キー、署名アルゴリズム、キー使用法、拡張キー使用法などのフィールドが、このエンジンで設定されているアルゴリズムの制約に準拠している必要があります。

      パラメータ:
      chain - ピアの証明書チェーン
      authType - 使用されるキー交換アルゴリズム
      engine - この接続に使用するエンジン。 このパラメータにはnullを指定可能。これは、実装でsslパラメータをチェックする必要がないことを示す
      例外:
      IllegalArgumentException - nullまたは長さ0の配列がchainパラメータに渡された場合、あるいはnullまたは長さ0の文字列がauthTypeパラメータに渡された場合
      CertificateException - 証明書チェーンがこのTrustManagerによって信頼されていない場合
      関連項目:
      SSLParameters.getEndpointIdentificationAlgorithm(), SSLParameters.setEndpointIdentificationAlgorithm(String), SSLParameters.getAlgorithmConstraints(), SSLParameters.setAlgorithmConstraints(AlgorithmConstraints)