クラスSSLServerSocket
- すべての実装されたインタフェース:
Closeable, AutoCloseable
ServerSocketを拡張し、セキュア・ソケット・レイヤー(SSL)やTransport Layer Security (TLS)プロトコルなどのプロトコルを使用して、安全なサーバー・ソケットを提供します。
このクラスのインスタンスは、通常、SSLServerSocketFactoryを使用して作成されます。 SSLServerSocketの主な機能は、accept ing接続によってSSLSocketを作成することです。
SSLServerSocketには、ソケット作成時にSSLSocketに継承されるいくつかの状態データが含まれています。 たとえば、有効になっている暗号化方式群とプロトコル、クライアント認証が必要かどうか、このソケットがハンドシェークを開始するときのモード(クライアント・モードまたはサーバー・モード)、などの情報が継承されます。 作成されたSSLSocketによって継承された状態は、適切なメソッドを呼び出すことによってオーバーライドできます。
- 導入されたバージョン:
- 1.4
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protectedサブクラスでだけ使用されます。protectedSSLServerSocket(int port) サブクラスでだけ使用されます。protectedSSLServerSocket(int port, int backlog) サブクラスでだけ使用されます。protectedSSLServerSocket(int port, int backlog, InetAddress address) サブクラスでだけ使用されます。 -
メソッドのサマリー
修飾子と型メソッド説明abstract String[]新しく受け入れた接続で現在使用可能になっている暗号化方式群のリストを返します。abstract String[]新しく受け入れた接続で現在使用可能になっているプロトコル名を返します。abstract booleanこのサーバー・ソケットから作成されたソケットで、新しいSSLセッションを確立する場合はtrueを返します。abstract boolean新しくacceptされたサーバー・モードのSSLSocket上でクライアント認証が必要な場合はtrueを返します。新しく受け入れられた接続で有効なSSLParametersを返します。abstract String[]SSL接続で使用可能にできる暗号化方式群の名前を返します。abstract String[]使用可能にできるプロトコルの名前を返します。abstract boolean受け入れた接続がSSLクライアント・モードになる場合はtrueを返します。abstract boolean新しく受け入れられたサーバー・モードの接続上でクライアント認証が要求される場合はtrueを返します。abstract voidsetEnabledCipherSuites(String[] suites) 受け入れられた接続で使用可能な暗号化方式群を設定します。abstract voidsetEnabledProtocols(String[] protocols) 受け入れた接続で使用可能なプロトコルを制御します。abstract voidsetEnableSessionCreation(boolean flag) このサーバー・ソケットから作成されたソケットで、新しいSSLセッションを確立すかどうかを制御します。abstract voidsetNeedClientAuth(boolean need) acceptされたサーバー・モードのSSLSocketsが、クライアント認証が必要なように初期構成されるかどうかを制御します。voidsetSSLParameters(SSLParameters params) 新しく受け入れられた接続にSSLParametersを適用します。abstract voidsetUseClientMode(boolean mode) 受け入れた接続がデフォルトでSSLサーバー・モードになるか、SSLクライアント・モードになるかを制御します。abstract voidsetWantClientAuth(boolean want) acceptされたサーバー・モードのSSLSocketsが、クライアント認証を要求するように初期構成されるかどうかを制御します。クラスで宣言されたメソッド ServerSocket
accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getOption, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setOption, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, supportedOptions, toString修飾子と型メソッド説明accept()このソケットに対する接続要求を待機し、それを受け取ります。voidbind(SocketAddress endpoint) ServerSocketを特定のアドレス(IPアドレスおよびポート番号)にバインドします。voidbind(SocketAddress endpoint, int backlog) ServerSocketを特定のアドレス(IPアドレスおよびポート番号)にバインドします。voidclose()このソケットを閉じます。このソケットに関連付けられた一意のServerSocketChannelオブジェクトを返します(存在する場合)。このサーバー・ソケットのローカル・アドレスを返します。intこのソケットが接続を待機中のポート番号を返します。このソケットのバインド先の端点のアドレスを返します。<T> TgetOption(SocketOption<T> name) ソケット・オプションの値を返します。intこのServerSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このServerSocketから受け取るソケットに使用される推奨バッファ・サイズです。booleanSO_REUSEADDRが有効かどうかを調べます。intRetrieve setting forSO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。protected final voidimplAccept(Socket s) ServerSocketのサブクラスは、このメソッドを使ってaccept()をオーバーライドすることで、独自のサブクラスのソケットが返されるようにします。booleanisBound()ServerSocketのバインディング状態を返します。booleanisClosed()ServerSocketの閉じた状態を返します。<T> ServerSocketsetOption(SocketOption<T> name, T value) ソケット・オプションの値を設定します。voidsetPerformancePreferences(int connectionTime, int latency, int bandwidth) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。この方法は、現在廃止されているプロトコルを許可することを目的としています。voidsetReceiveBufferSize(int size) このServerSocketから受け入れられたソケットのSO_RCVBUFオプションのデフォルト推奨値を設定します。voidsetReuseAddress(boolean on) SO_REUSEADDRソケット・オプションを有効または無効にします。static void非推奨。ServerSocketFactoryおよびサブクラスServerSocketを直接使用します。voidsetSoTimeout(int timeout) 指定されたタイムアウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。Set<SocketOption<?>> このサーバー・ソケットでサポートされているソケット・オプションのセットを返します。toString()このソケットの実装アドレスと実装ポートをStringとして返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
コンストラクタの詳細
-
SSLServerSocket
protected SSLServerSocket() throws IOExceptionサブクラスでだけ使用されます。デフォルトの認証コンテキストを使用して、バインドされていないTCPサーバー・ソケットを作成します。
- スロー:
IOException- ソケットの作成時に入出力エラーが発生した場合
-
SSLServerSocket
protected SSLServerSocket(int port) throws IOException サブクラスでだけ使用されます。デフォルトの認証コンテキストを使用して、ポート上にTCPサーバー・ソケットを作成します。 キューに格納される接続バックログの最大数は、デフォルトで50に設定されています。キュー内の接続要求が最大数を超えると、新しい接続要求は拒否されます。
ポート番号に
0を指定すると、いずれかの空いているポート上でソケットが作成されます。- パラメータ:
port- 待機するポート- スロー:
IOException- ソケットの作成時に入出力エラーが発生した場合IllegalArgumentException- portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
-
SSLServerSocket
protected SSLServerSocket(int port, int backlog) throws IOException サブクラスでだけ使用されます。デフォルトの認証コンテキストと、指定された接続バックログを使用して、ポート上にTCPサーバー・ソケットを作成します。
ポート番号に
0を指定すると、いずれかの空いているポート上でソケットが作成されます。backlog引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0より大きくなければいけません。0以下の場合は、実装固有のデフォルトが使用されます。- パラメータ:
port- 待機するポートbacklog- 着信接続のキューの要求された最大長。- スロー:
IOException- ソケットの作成時に入出力エラーが発生した場合IllegalArgumentException- portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
-
SSLServerSocket
protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException サブクラスでだけ使用されます。デフォルトの認証コンテキスト、指定された接続バックログ、および指定されたネットワーク・インタフェースを使用して、ポート上にTCPサーバー・ソケットを作成します。 このコンストラクタは、ファイアウォールやルーターとして使用されるマルチホーム・ホスト上で使用され、ネットワーク・サービスを提供するインタフェースを制御します。
ポート番号に
0を指定すると、いずれかの空いているポート上でソケットが作成されます。backlog引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0より大きくなければいけません。0以下の場合は、実装固有のデフォルトが使用されます。addressがnullの場合、これはデフォルトで、任意の(すべての)ローカル・アドレス上の接続を受け入れます。
- パラメータ:
port- 待機するポートbacklog- 着信接続のキューの要求された最大長。address- 接続を受け入れるネットワーク・インタフェースのアドレス- スロー:
IOException- ソケットの作成時に入出力エラーが発生した場合IllegalArgumentException- portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
-
-
メソッドの詳細
-
getEnabledCipherSuites
public abstract String[] getEnabledCipherSuites()新しく受け入れた接続で現在使用可能になっている暗号化方式群のリストを返します。このリストが明示的に変更されていない場合は、システム・デフォルトにより、使用可能なすべての暗号化方式群で、最小限のサービス品質が保証されます。
スイートが有効になっている場合でも、使用されないことがあります。 これは、ピアがそれをサポートしていないか、その使用が制限されているか、スイートに必要な証明書 (秘密キー)が使用できないか、または匿名スイートが有効になっているが認証が必要な場合に発生することがあります。
返される配列には、Java Security Standard Algorithm Names Specificationの「JSSE暗号スイート名」セクションにある標準の暗号スイート名のリストからの暗号スイートが含まれ、プロバイダがサポートする他の暗号スイートが含まれる場合もあります。
- 戻り値:
- 使用可能な暗号化方式群の配列
- 外部仕様
- 関連項目:
-
setEnabledCipherSuites
public abstract void setEnabledCipherSuites(String[] suites) 受け入れられた接続で使用可能な暗号化方式群を設定します。暗号化方式群は、getSupportedCipherSuites()により、サポート対象としてリストされていなければいけません。 このメソッドの呼出しが成功したあと、
suitesパラメータに示されている暗号化方式群のみが使用可能になります。このServerSocketの認証コンテキストで使用できない認証情報を要求する暗号化方式群は、たとえ有効になっていても使用されません。
暗号スイート名の標準のリストは、JavaセキュリティStandardアルゴリズム名の仕様の「JSSE暗号スイート名」セクションにあります。 プロバイダは、このリストにない暗号スイート名をサポートするか、特定の暗号スイートに推奨名を使用しない場合があります。
accept()から返されたSSLSocketは、この設定を継承します。- パラメータ:
suites- 有効にするすべての暗号化方式群の名前- スロー:
IllegalArgumentException- パラメータに指定された暗号化方式群の一部がサポートされない場合、またはパラメータがnullである場合。- 外部仕様
- 関連項目:
-
getSupportedCipherSuites
public abstract String[] getSupportedCipherSuites()SSL接続で使用可能にできる暗号化方式群の名前を返します。通常は、その一部のみがデフォルトで使用可能になります。デフォルトのサービス品質要件を満たしていない暗号化方式群は、使用不可になります。 それらの暗号化方式群は、特殊なアプリケーションで使用します。
返される配列には、Java Security Standard Algorithm Names Specificationの「JSSE暗号スイート名」セクションにある標準の暗号スイート名のリストからの暗号スイートが含まれ、プロバイダがサポートする他の暗号スイートが含まれる場合もあります。
- 戻り値:
- 暗号化方式群名の配列
- 外部仕様
- 関連項目:
-
getSupportedProtocols
public abstract String[] getSupportedProtocols()使用可能にできるプロトコルの名前を返します。- 戻り値:
- サポートされているプロトコル名の配列
- 関連項目:
-
getEnabledProtocols
public abstract String[] getEnabledProtocols()新しく受け入れた接続で現在使用可能になっているプロトコル名を返します。プロトコルは、有効になっている場合でも、決して使用できません。 これは、ピアがプロトコルをサポートしていないか、その使用が制限されているか、またはプロトコルでサポートされている有効な暗号スイートがない場合に発生する可能性があります。
- 戻り値:
- プロトコル名の配列
- 関連項目:
-
setEnabledProtocols
public abstract void setEnabledProtocols(String[] protocols) 受け入れた接続で使用可能なプロトコルを制御します。プロトコルは、getSupportedProtocols()により、サポート対象としてリストされていなければいけません。 このメソッドの呼出しが成功したあと、
protocolsパラメータに示されているプロトコルのみが使用可能になります。accept()から返されたSSLSocketは、この設定を継承します。- パラメータ:
protocols- 有効にするすべてのプロトコルの名前。- スロー:
IllegalArgumentException- パラメータで指定されたプロトコルの1つ以上がサポートされていないか、またはprotocolsパラメータがnullである場合。- 関連項目:
-
setNeedClientAuth
public abstract void setNeedClientAuth(boolean need) acceptされたサーバー・モードのSSLSocketsが、クライアント認証が必要なように初期構成されるかどうかを制御します。ソケットのクライアント認証設定は、次のいずれかになります。
- クライアント認証を必須にする
- クライアント認証を要求する
- クライアント認証を不要にする
setWantClientAuth(boolean)と異なり、受け入れたソケットのオプションが設定されていて、かつクライアント認証情報が提供されない場合は、ネゴシエーションが停止し、接続が切断されます。このメソッドを呼び出すと、このメソッドまたは
setWantClientAuth(boolean)によって行われた以前の設定がすべてオーバーライドされます。SSLSocket.setNeedClientAuth(boolean)またはSSLSocket.setWantClientAuth(boolean)を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。- パラメータ:
need- クライアント認証が必要な場合はtrueに、クライアント認証が不要な場合はfalseに設定される。- 関連項目:
-
getNeedClientAuth
public abstract boolean getNeedClientAuth()新しくacceptされたサーバー・モードのSSLSocket上でクライアント認証が必要な場合はtrueを返します。SSLSocket.setNeedClientAuth(boolean)またはSSLSocket.setWantClientAuth(boolean)を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。- 戻り値:
- クライアント認証が必須の場合はtrue、クライアント認証が不要な場合はfalse。
- 関連項目:
-
setWantClientAuth
public abstract void setWantClientAuth(boolean want) acceptされたサーバー・モードのSSLSocketsが、クライアント認証を要求するように初期構成されるかどうかを制御します。ソケットのクライアント認証設定は、次のいずれかになります。
- クライアント認証を必須にする
- クライアント認証を要求する
- クライアント認証を不要にする
setNeedClientAuth(boolean)と異なり、受け入れたソケットのオプションが設定されていて、かつクライアント認証情報が提供されない場合でも、ネゴシエーションは続行されます。このメソッドを呼び出すと、このメソッドまたは
setNeedClientAuth(boolean)によって行われた以前の設定がすべてオーバーライドされます。SSLSocket.setNeedClientAuth(boolean)またはSSLSocket.setWantClientAuth(boolean)を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。- パラメータ:
want- クライアント認証が要求されている場合はtrueに、クライアント認証が不要な場合はfalseに設定される。- 関連項目:
-
getWantClientAuth
public abstract boolean getWantClientAuth()新しく受け入れられたサーバー・モードの接続上でクライアント認証が要求される場合はtrueを返します。SSLSocket.setNeedClientAuth(boolean)またはSSLSocket.setWantClientAuth(boolean)を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。- 戻り値:
- クライアント認証が要求された場合はtrue、クライアント認証が不要な場合はfalse。
- 関連項目:
-
setUseClientMode
public abstract void setUseClientMode(boolean mode) 受け入れた接続がデフォルトでSSLサーバー・モードになるか、SSLクライアント・モードになるかを制御します。通常、サーバーは自身を認証しますが、クライアントは必ずしもそうとはかぎりません。
新しく受け入れた接続で、SSLクライアント・モードのTCPサーバーを要求することがあります。 たとえば、FTPクライアントは、サーバー・ソケットを取得すると、そのソケット上でサーバーからの接続を待機します。 FTPクライアントは、サーバーからの接続を受け入れるときに、クライアント・モードのSSLServerSocketを使用します。FTPサーバーは、接続を開始するときにクライアント・モードを無効にしたSSLSocketを使用します。 この場合、ハンドシェークを行うときは、既存のSSLセッションが再利用されます。
accept()から返されたSSLSocketは、この設定を継承します。- パラメータ:
mode- 新しく受け入れた接続がSSLクライアント・モードを使用する場合はtrue。- 関連項目:
-
getUseClientMode
public abstract boolean getUseClientMode()受け入れた接続がSSLクライアント・モードになる場合はtrueを返します。- 戻り値:
- 接続がSSLクライアント・モードを使用する場合はtrue。
- 関連項目:
-
setEnableSessionCreation
public abstract void setEnableSessionCreation(boolean flag) このサーバー・ソケットから作成されたソケットで、新しいSSLセッションを確立すかどうかを制御します。accept()から返されたSSLSocketは、この設定を継承します。- パラメータ:
flag- セッションを作成できる場合はtrue (デフォルト)。既存のセッションを再開する場合はfalse。- 関連項目:
-
getEnableSessionCreation
public abstract boolean getEnableSessionCreation()このサーバー・ソケットから作成されたソケットで、新しいSSLセッションを確立する場合はtrueを返します。- 戻り値:
- セッションを作成できる場合はtrue (デフォルト)。既存のセッションを再開する場合はfalse
- 関連項目:
-
getSSLParameters
public SSLParameters getSSLParameters()新しく受け入れられた接続で有効なSSLParametersを返します。 返されるSSLParametersの暗号化方式群とプロトコルは、常にnull以外です。- 戻り値:
- 新しく受け入れられた接続で有効なSSLParameters
- 導入されたバージョン:
- 1.7
- 関連項目:
-
setSSLParameters
public void setSSLParameters(SSLParameters params) 新しく受け入れられた接続にSSLParametersを適用します。これは次のことを意味します。
params.getCipherSuites()がnull以外の場合は、その値を使用してsetEnabledCipherSuites()が呼び出される。params.getProtocols()がnull以外の場合は、その値を使用してsetEnabledProtocols()が呼び出される。params.getNeedClientAuth()またはparams.getWantClientAuth()がtrueを返した場合は、それぞれsetNeedClientAuth(true)とsetWantClientAuth(true)が呼び出される。それ以外の場合はsetWantClientAuth(false)が呼び出される。params.getServerNames()がnull以外の場合、ソケットはサーバー名をその値で構成する。params.getSNIMatchers()がnull以外の場合、ソケットはSNIマッチャをその値で構成する。
- パラメータ:
params- パラメータ- スロー:
IllegalArgumentException- setEnabledCipherSuites()またはsetEnabledProtocols()の呼出しが失敗した場合- 導入されたバージョン:
- 1.7
- 関連項目:
-