モジュール java.base
パッケージ 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オブジェクト
        例外:
        UnsupportedOperationException - ベースとなるプロバイダがこの操作を実装していない場合。
        IllegalStateException - SSLContextImplに初期化が必要であり、init()が呼び出されていない場合
        導入されたバージョン:
        1.5
      • createSSLEngine

        public final SSLEngine createSSLEngine​(String peerHost,
                                               int peerPort)
        補足的なピア情報を使用して、このコンテキストを使用する新しいSSLEngineを作成します。

        このファクトリ・メソッドを使用しているアプリケーションは、内部セッションの再利用に関するヒントを提供します。

        Kerberosなど、リモート・ホスト名の情報を必要とする暗号化方式群もあります。この場合は、peerHostを指定する必要があります。

        パラメータ:
        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