public abstract class X509ExtendedTrustManager extends Object implements X509TrustManager
X509TrustManager
インタフェースの拡張機能。
man-in-the-middle攻撃を防ぐために、ホスト名チェックを行なって、エンド・エンティティ証明書のホスト名がターゲットのホスト名と一致することを検証できます。TLSではそのようなチェックを行う必要はありませんが、TLSを介するいくつかのプロトコル(HTTPSなど)では必要となります。JDKの初期バージョンでは、SSL/TLSレイヤーで証明書チェーンのチェックが行われ、TLSを介するレイヤーでホスト名検証のチェックが行われました。このクラスを1回呼び出すと、そのチェックを行うことができます。
RFC 2830には、「LDAPS」アルゴリズムのサーバー識別仕様が定義されています。RFC 2818には、「HTTPS」アルゴリズムのサーバー識別仕様とクライアント識別仕様の両方が定義されています。
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パラメータに基づいて証明書パスを構築して検証します。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
checkClientTrusted, checkServerTrusted, getAcceptedIssuers
public abstract void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException
認証タイプは、実際に使用される証明書によって決まります。たとえば、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)
public abstract void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException
認証タイプは、暗号化方式群の鍵交換アルゴリズムで、「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)
public abstract void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException
認証タイプは、実際に使用される証明書によって決まります。たとえば、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)
public abstract void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException
認証タイプは、暗号化方式群の鍵交換アルゴリズムで、「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)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.