- 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()
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 abstract 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パラメータに基づいて証明書パスを構築して検証します。-
クラス java.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
インタフェース javax.net.ssl.X509TrustManagerで宣言されたメソッド
checkClientTrusted, checkServerTrusted, getAcceptedIssuers
-
-
-
-
メソッドの詳細
-
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)
-
-