public class SSLContext extends Object
SSLEngine
のファクトリとして機能する、セキュア・ソケット・プロトコルの実装を表します。 このクラスは、キー・マネージャと信頼マネージャの任意の組み合わせ、および安全な乱数バイトのソースを使用して初期化されます。
Javaプラットフォームの実装は、すべて次の標準のSSLContext
プロトコルをサポートする必要があります。
TLSv1.2
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
SSLContextオブジェクトを生成します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 SSLEngine
createSSLEngine()
このコンテキストを使用して、新しいSSLEngine
を作成します。SSLEngine
createSSLEngine(String peerHost, int peerPort)
補足的なピア情報を使用して、このコンテキストを使用する新しいSSLEngine
を作成します。SSLSessionContext
getClientSessionContext()
クライアント・セッション・コンテキストを返します。このコンテキストには、クライアント側SSLソケットのハンドシェーク中に使用できるSSLセッションが指定されています。static SSLContext
getDefault()
デフォルトのSSLコンテキストを返します。SSLParameters
getDefaultSSLParameters()
このSSLコンテキストのデフォルト設定を示すSSLParametersのコピーを返します。static SSLContext
getInstance(String protocol)
指定されたセキュア・ソケット・プロトコルを実装するSSLContext
オブジェクトを返します。static SSLContext
getInstance(String protocol, String provider)
指定されたセキュア・ソケット・プロトコルを実装するSSLContext
オブジェクトを返します。static SSLContext
getInstance(String protocol, Provider provider)
指定されたセキュア・ソケット・プロトコルを実装するSSLContext
オブジェクトを返します。String
getProtocol()
このSSLContext
オブジェクトのプロトコル名を返します。Provider
getProvider()
このSSLContext
オブジェクトのプロバイダを返します。SSLSessionContext
getServerSessionContext()
サーバー・セッション・コンテキストを返します。このコンテキストには、サーバー側SSLソケットのハンドシェーク中に使用できるSSLセッションが指定されています。SSLServerSocketFactory
getServerSocketFactory()
このコンテキストのServerSocketFactory
オブジェクトを返します。SSLSocketFactory
getSocketFactory()
このコンテキストのSocketFactory
オブジェクトを返します。SSLParameters
getSupportedSSLParameters()
このSSLコンテキストでサポートされる設定を示すSSLParametersのコピーを返します。void
init(KeyManager[] km, TrustManager[] tm, SecureRandom random)
このコンテキストを初期化します。static void
setDefault(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である場合SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドがSSLPermission("setDefaultSSLContext")
が許可しない場合- 導入されたバージョン:
- 1.6
-
getInstance
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException指定されたセキュア・ソケット・プロトコルを実装するSSLContext
オブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダのSSLContextSpi実装をカプセル化する新しいSSLContextオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
protocol
- 要求されたプロトコルの標準名。 標準プロトコル名については、「Javaセキュリティ標準アルゴリズム名指定」のSSLContextセクションを参照してください。- 戻り値:
- 新しい
SSLContext
オブジェクト - 例外:
NoSuchAlgorithmException
-Provider
が、指定されたプロトコルのSSLContextSpi
実装をサポートしていない場合NullPointerException
-protocol
がnull
の場合- 関連項目:
Provider
-
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
の場合- 関連項目:
Provider
-
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
の場合- 関連項目:
Provider
-
getProtocol
public final String getProtocol()このSSLContext
オブジェクトのプロトコル名を返します。これは、この
SSLContext
オブジェクトを作成したgetInstance
呼出しのいずれかに指定された名前と同じです。- 戻り値:
- この
SSLContext
オブジェクトのプロトコル名。
-
getProvider
public final Provider getProvider()このSSLContext
オブジェクトのプロバイダを返します。- 戻り値:
- この
SSLContext
オブジェクトのプロバイダ
-
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
-