- すべての実装されたインタフェース:
Closeable
,AutoCloseable
ServerSocket
を拡張し、セキュア・ソケット・レイヤー(SSL)やTransport Layer Security (TLS)プロトコルなどのプロトコルを使用して、安全なサーバー・ソケットを提供します。
このクラスのインスタンスは、通常、SSLServerSocketFactory
を使用して作成されます。 SSLServerSocket
の主な機能は、accept
ing接続によってSSLSocket
を作成することです。
SSLServerSocket
には、ソケット作成時にSSLSocket
に継承されるいくつかの状態データが含まれています。 たとえば、有効になっている暗号化方式群とプロトコル、クライアント認証が必要かどうか、このソケットがハンドシェークを開始するときのモード(クライアント・モードまたはサーバー・モード)、などの情報が継承されます。 作成されたSSLSocket
によって継承された状態は、適切なメソッドを呼び出すことによってオーバーライドできます。
- 導入されたバージョン:
- 1.4
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protected
サブクラスでだけ使用されます。protected
SSLServerSocket
(int port) サブクラスでだけ使用されます。protected
SSLServerSocket
(int port, int backlog) サブクラスでだけ使用されます。protected
SSLServerSocket
(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 void
setEnabledCipherSuites
(String[] suites) 受け入れられた接続で使用可能な暗号化方式群を設定します。abstract void
setEnabledProtocols
(String[] protocols) 受け入れた接続で使用可能なプロトコルを制御します。abstract void
setEnableSessionCreation
(boolean flag) このサーバー・ソケットから作成されたソケットで、新しいSSLセッションを確立すかどうかを制御します。abstract void
setNeedClientAuth
(boolean need) accept
されたサーバー・モードのSSLSockets
が、クライアント認証が必要なように初期構成されるかどうかを制御します。void
setSSLParameters
(SSLParameters params) 新しく受け入れられた接続にSSLParametersを適用します。abstract void
setUseClientMode
(boolean mode) 受け入れた接続がデフォルトでSSLサーバー・モードになるか、SSLクライアント・モードになるかを制御します。abstract void
setWantClientAuth
(boolean want) accept
されたサーバー・モードのSSLSockets
が、クライアント認証を要求するように初期構成されるかどうかを制御します。クラスjava.net.ServerSocketで宣言されたメソッド
accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getOption, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setOption, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, supportedOptions, toString
-
コンストラクタの詳細
-
SSLServerSocket
protected SSLServerSocket() throws IOExceptionサブクラスでだけ使用されます。デフォルトの認証コンテキストを使用して、バインドされていないTCPサーバー・ソケットを作成します。
- 例外:
IOException
- ソケットの作成時に入出力エラーが発生した場合
-
SSLServerSocket
protected SSLServerSocket(int port) throws IOException サブクラスでだけ使用されます。デフォルトの認証コンテキストを使用して、ポート上にTCPサーバー・ソケットを作成します。 キューに格納される接続バックログの最大数は、デフォルトで50に設定されています。キュー内の接続要求が最大数を超えると、新しい接続要求は拒否されます。
ポート番号に
0
を指定すると、いずれかの空いているポート上でソケットが作成されます。セキュリティ・マネージャが存在する場合、この操作が許可されるように、その
checkListen
メソッドがport
引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
port
- 待機するポート- 例外:
IOException
- ソケットの作成時に入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャが存在し、そのcheckListen
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。- 関連項目:
-
SSLServerSocket
protected SSLServerSocket(int port, int backlog) throws IOException サブクラスでだけ使用されます。デフォルトの認証コンテキストと、指定された接続バックログを使用して、ポート上にTCPサーバー・ソケットを作成します。
ポート番号に
0
を指定すると、いずれかの空いているポート上でソケットが作成されます。backlog
引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0
より大きくなければいけません。0
以下の場合は、実装固有のデフォルトが使用されます。セキュリティ・マネージャが存在する場合、この操作が許可されるように、その
checkListen
メソッドがport
引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
port
- 待機するポートbacklog
- 着信接続のキューの要求された最大長。- 例外:
IOException
- ソケットの作成時に入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャが存在し、そのcheckListen
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。- 関連項目:
-
SSLServerSocket
protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException サブクラスでだけ使用されます。デフォルトの認証コンテキスト、指定された接続バックログ、および指定されたネットワーク・インタフェースを使用して、ポート上にTCPサーバー・ソケットを作成します。 このコンストラクタは、ファイアウォールやルーターとして使用されるマルチホーム・ホスト上で使用され、ネットワーク・サービスを提供するインタフェースを制御します。
セキュリティ・マネージャが存在する場合、この操作が許可されるように、その
checkListen
メソッドがport
引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。ポート番号に
0
を指定すると、いずれかの空いているポート上でソケットが作成されます。backlog
引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0
より大きくなければいけません。0
以下の場合は、実装固有のデフォルトが使用されます。addressがnullの場合、これはデフォルトで、任意の(すべての)ローカル・アドレス上の接続を受け入れます。
- パラメータ:
port
- 待機するポートbacklog
- 着信接続のキューの要求された最大長。address
- 接続を受け入れるネットワーク・インタフェースのアドレス- 例外:
IOException
- ソケットの作成時に入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャが存在し、そのcheckListen
メソッドでこの操作が許可されていない場合。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
- 関連項目:
-