クラスSSLContext
SSLEngineのファクトリとして機能する、セキュア・ソケット・プロトコルの実装を表します。 このクラスは、キー・マネージャと信頼マネージャの任意の組み合わせ、および安全な乱数バイトのソースを使用して初期化されます。
Javaプラットフォームの実装は、すべて次の標準のSSLContextプロトコルをサポートする必要があります。
TLSv1.2
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protectedSSLContext(SSLContextSpi contextSpi, Provider provider, String protocol) SSLContextオブジェクトを生成します。 -
メソッドのサマリー
修飾子と型メソッド説明final SSLEngineこのコンテキストを使用して、新しいSSLEngineを作成します。final SSLEnginecreateSSLEngine(String peerHost, int peerPort) 補足的なピア情報を使用して、このコンテキストを使用する新しいSSLEngineを作成します。final SSLSessionContextクライアント・セッション・コンテキストを返します。このコンテキストには、クライアント側SSLソケットのハンドシェーク中に使用できるSSLセッションが指定されています。static SSLContextデフォルトのSSLコンテキストを返します。final SSLParametersこのSSLコンテキストのデフォルト設定を示すSSLParametersのコピーを返します。static SSLContextgetInstance(String protocol) 指定されたセキュア・ソケット・プロトコルを実装するSSLContextオブジェクトを返します。static SSLContextgetInstance(String protocol, String provider) 指定されたセキュア・ソケット・プロトコルを実装するSSLContextオブジェクトを返します。static SSLContextgetInstance(String protocol, Provider provider) 指定されたセキュア・ソケット・プロトコルを実装するSSLContextオブジェクトを返します。final StringこのSSLContextオブジェクトのプロトコル名を返します。final ProviderこのSSLContextオブジェクトのプロバイダを返します。final SSLSessionContextサーバー・セッション・コンテキストを返します。このコンテキストには、サーバー側SSLソケットのハンドシェーク中に使用できるSSLセッションが指定されています。final SSLServerSocketFactoryこのコンテキストのServerSocketFactoryオブジェクトを返します。final SSLSocketFactoryこのコンテキストのSocketFactoryオブジェクトを返します。final SSLParametersこのSSLコンテキストでサポートされる設定を示すSSLParametersのコピーを返します。final voidinit(KeyManager[] km, TrustManager[] tm, SecureRandom random) このコンテキストを初期化します。static voidsetDefault(SSLContext context) デフォルトのSSLコンテキストを設定します。
-
コンストラクタの詳細
-
SSLContext
protected SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol) SSLContextオブジェクトを生成します。- パラメータ:
contextSpi- 委譲先provider- プロバイダprotocol- プロトコル
-
-
メソッドの詳細
-
getDefault
public static SSLContext getDefault() throws NoSuchAlgorithmExceptionデフォルトのSSLコンテキストを返します。SSLContext.setDefault()メソッドを使用してデフォルト・コンテキストが設定されていた場合は、そのデフォルト・コンテキストが返されます。 そうでない場合は、このメソッドを最初に呼び出したときにSSLContext.getInstance("Default")の呼出しがトリガーされます。 成功すると、そのオブジェクトがデフォルトのSSLコンテキストになり、返されます。デフォルト・コンテキストはすぐに使用可能となり、初期化する必要はありません。
- 戻り値:
- デフォルトのSSLコンテキスト
- スロー:
NoSuchAlgorithmException-SSLContext.getInstance()の呼出しが失敗した場合- 導入されたバージョン:
- 1.6
-
setDefault
public static void setDefault(SSLContext context) - パラメータ:
context- SSLContext- スロー:
NullPointerException- コンテキストがnullである場合- 導入されたバージョン:
- 1.6
-
getInstance
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException 指定されたセキュア・ソケット・プロトコルを実装するSSLContextオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダのSSLContextSpi実装をカプセル化する新しいSSLContextオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferredSecurityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
protocol- 要求されたプロトコルの標準名。 標準プロトコル名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSSLContextの項を参照してください。- 戻り値:
- 新しい
SSLContextオブジェクト - スロー:
NoSuchAlgorithmException-Providerが、指定されたプロトコルのSSLContextSpi実装をサポートしていない場合NullPointerException-protocolがnullの場合- 関連項目:
-
getInstance
public static SSLContext getInstance(String protocol, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたセキュア・ソケット・プロトコルを実装するSSLContextオブジェクトを返します。指定されたプロバイダのSSLContextSpi実装をカプセル化する新しいSSLContextオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- パラメータ:
protocol- 要求されたプロトコルの標準名。 標準プロトコル名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSSLContextの項を参照してください。provider- プロバイダ名。- 戻り値:
- 新しい
SSLContextオブジェクト - スロー:
IllegalArgumentException- プロバイダ名がnullまたは空の場合NoSuchAlgorithmException- 指定されたプロトコルのSSLContextSpi実装が指定されたプロバイダから利用できない場合NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException-protocolがnullの場合- 関連項目:
-
getInstance
public static SSLContext getInstance(String protocol, Provider provider) throws NoSuchAlgorithmException 指定されたセキュア・ソケット・プロトコルを実装するSSLContextオブジェクトを返します。指定されたProviderオブジェクトのSSLContextSpi実装をカプセル化する新しいSSLContextオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
protocol- 要求されたプロトコルの標準名。 標準プロトコル名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSSLContextの項を参照してください。provider- プロバイダのインスタンス。- 戻り値:
- 新しい
SSLContextオブジェクト - スロー:
IllegalArgumentException- プロバイダがnullの場合NoSuchAlgorithmException- 指定されたプロトコルのSSLContextSpi実装が、指定されたProviderオブジェクトから使用できない場合NullPointerException-protocolがnullの場合- 関連項目:
-
getProtocol
public final String getProtocol()このSSLContextオブジェクトのプロトコル名を返します。これは、この
SSLContextオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。- 戻り値:
- この
SSLContextオブジェクトのプロトコル名。
-
getProvider
-
init
public final void init(KeyManager[] km, TrustManager[] tm, SecureRandom random) throws KeyManagementException このコンテキストを初期化します。 最初の2つのパラメータのどちらかをnullにした場合は、インストールされているセキュリティ・プロバイダから、該当するファクトリのもっとも優先順位の高い実装が検索されます。 同様に、SecureRandomパラメータをnullにした場合は、デフォルトの実装が使用されます。キー・マネージャや信頼マネージャは、配列内に最初に配置されている実装型のインスタンスだけが使用されます。 (たとえば、配列内の最初のjavax.net.ssl.X509KeyManagerだけが使用される)。
- パラメータ:
km- 認証キーのソース、またはnulltm- ピア認証の信頼を判断するソース、またはnullrandom- このジェネレータの乱数発生の元、またはnull- スロー:
KeyManagementException- この操作が失敗した場合
-
getSocketFactory
public final SSLSocketFactory getSocketFactory()このコンテキストのSocketFactoryオブジェクトを返します。- 戻り値:
SocketFactoryオブジェクト- スロー:
UnsupportedOperationException- ベースとなるプロバイダがこの操作を実装していない場合。IllegalStateException- SSLContextImplに初期化が必要であり、init()が呼び出されていない場合
-
getServerSocketFactory
public final SSLServerSocketFactory getServerSocketFactory()このコンテキストのServerSocketFactoryオブジェクトを返します。- 戻り値:
ServerSocketFactoryオブジェクト- スロー:
UnsupportedOperationException- ベースとなるプロバイダがこの操作を実装していない場合。IllegalStateException- SSLContextImplに初期化が必要であり、init()が呼び出されていない場合
-
createSSLEngine
public final SSLEngine createSSLEngine()このコンテキストを使用して、新しいSSLEngineを作成します。このファクトリ・メソッドを使用しているアプリケーションは、内部セッションの再利用に関するヒントを提供しません。 ヒントが必要な場合は、代わりに
createSSLEngine(String, int)を使用するようにしてください。Kerberosなど、リモート・ホスト名の情報を必要とする暗号化方式群もあります。この場合は、このファクトリ・メソッドを使用しないでください。
- 実装上のノート:
- 返されるSSLEngineが(D)TLS接続にデフォルトでクライアントまたはサーバー・モードを使用する場合、プロバイダ固有です。 JDK SunJSSEプロバイダの実装では、デフォルトでサーバー・モードが使用されます。 ただし、SSLEngineの他のメソッドを呼び出す前に、
SSLEngine.setUseClientMode()をコールして、常に目的のモードを明示的に設定することをお薦めします。 - 戻り値:
SSLEngineオブジェクト- スロー:
UnsupportedOperationException- ベースとなるプロバイダがこの操作を実装していない場合。IllegalStateException- SSLContextImplに初期化が必要であり、init()が呼び出されていない場合- 導入されたバージョン:
- 1.5
-
createSSLEngine
補足的なピア情報を使用して、このコンテキストを使用する新しいSSLEngineを作成します。このファクトリ・メソッドを使用しているアプリケーションは、内部セッションの再利用に関するヒントを提供します。
Kerberosなど、リモート・ホスト名の情報を必要とする暗号化方式群もあります。この場合は、peerHostを指定する必要があります。
- 実装上のノート:
- 返されるSSLEngineが(D)TLS接続にデフォルトでクライアントまたはサーバー・モードを使用する場合、プロバイダ固有です。 JDK SunJSSEプロバイダの実装では、デフォルトでサーバー・モードが使用されます。 ただし、SSLEngineの他のメソッドを呼び出す前に、
SSLEngine.setUseClientMode()をコールして、常に目的のモードを明示的に設定することをお薦めします。 - パラメータ:
peerHost- ホストの権限のない名前peerPort- 権限のないポート- 戻り値:
- 新しい
SSLEngineオブジェクト - スロー:
UnsupportedOperationException- ベースとなるプロバイダがこの操作を実装していない場合。IllegalStateException- SSLContextImplに初期化が必要であり、init()が呼び出されていない場合- 導入されたバージョン:
- 1.5
-
getServerSessionContext
public final SSLSessionContext getServerSessionContext()サーバー・セッション・コンテキストを返します。このコンテキストには、サーバー側SSLソケットのハンドシェーク中に使用できるSSLセッションが指定されています。コンテキストは、一部の環境では取得できません。その場合はnullを返します。 たとえば、ベースとなるSSLプロバイダがSSLSessionContextインタフェースの実装を提供していない場合は、このメソッドはnullを返します。 それ以外の場合は、null以外のセッション・コンテキストが返されます。
- 戻り値:
- このSSLコンテキストにバインドされているサーバー・セッション・コンテキスト
-
getClientSessionContext
public final SSLSessionContext getClientSessionContext()クライアント・セッション・コンテキストを返します。このコンテキストには、クライアント側SSLソケットのハンドシェーク中に使用できるSSLセッションが指定されています。コンテキストは、一部の環境では取得できません。その場合はnullを返します。 たとえば、ベースとなるSSLプロバイダがSSLSessionContextインタフェースの実装を提供していない場合は、このメソッドはnullを返します。 それ以外の場合は、null以外のセッション・コンテキストが返されます。
- 戻り値:
- このSSLコンテキストにバインドされているクライアント・セッション・コンテキスト
-
getDefaultSSLParameters
public final SSLParameters getDefaultSSLParameters()このSSLコンテキストのデフォルト設定を示すSSLParametersのコピーを返します。パラメータは、null値以外に設定された暗号化方式群とプロトコル配列を常に持ちます。
- 戻り値:
- デフォルト設定を持つSSLParametersオブジェクトのコピー
- スロー:
UnsupportedOperationException- デフォルトのSSLパラメータを取得できなかった場合。- 導入されたバージョン:
- 1.6
-
getSupportedSSLParameters
public final SSLParameters getSupportedSSLParameters()このSSLコンテキストでサポートされる設定を示すSSLParametersのコピーを返します。パラメータは、null値以外に設定された暗号化方式群とプロトコル配列を常に持ちます。
- 戻り値:
- サポートされる設定を持つSSLParametersオブジェクトのコピー
- スロー:
UnsupportedOperationException- サポートされるSSLパラメータを取得できなかった場合。- 導入されたバージョン:
- 1.6
-