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

クラスSSLContext

java.lang.Object
javax.net.ssl.SSLContext

public class SSLContext
extends Object
このクラスのインスタンスは、セキュア・ソケット・ファクトリまたはSSLEngineのファクトリとして機能する、セキュア・ソケット・プロトコルの実装を表します。 このクラスは、キー・マネージャと信頼マネージャの任意の組み合わせ、および安全な乱数バイトのソースを使用して初期化されます。

Javaプラットフォームの実装は、すべて次の標準のSSLContextプロトコルをサポートする必要があります。

  • TLSv1.2
このプロトコルについては、Java Security Standard Algorithm Names Specificationの「SSLContextセクション」で説明しています。 実装については、リリース・ドキュメントを参照して、ほかのプロトコルがサポートされているかどうかを確認してください。

導入されたバージョン:
1.4
  • コンストラクタの詳細

    • 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)
      デフォルトのSSLコンテキストを設定します。 これは、後続のgetDefault()の呼出しで返されます。 デフォルト・コンテキストはすぐに使用可能となり、初期化する必要はありません。
      パラメータ:
      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 - protocolnullの場合
      関連項目:
      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 - protocolnullの場合
      関連項目:
      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 - protocolnullの場合
      関連項目:
      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 - 認証キーのソース、またはnull
      tm - ピア認証の信頼を判断するソース、またはnull
      random - このジェネレータの乱数発生の元、または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

      public final SSLEngine createSSLEngine​(String peerHost, int peerPort)
      補足的なピア情報を使用して、このコンテキストを使用する新しい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