public abstract class SSLServerSocket extends ServerSocket
ServerSocket
を拡張し、Secure Sockets Layer (SSL) や Transport Layer Security (TLS) などのプロトコルを使用するセキュアサーバーソケットを提供します。
このクラスのインスタンスを作成するときは、通常、SSLServerSocketFactory
を使用します。SSLServerSocket
の主要な機能は、接続を accept
して SSLSocket
を作成することです。
SSLServerSocket
の一部の状態データは、作成される SSLSocket
に継承されます。たとえば、有効になっている暗号化方式群とプロトコル、クライアント認証が必要かどうか、このソケットがハンドシェークを開始するときのモード (クライアントモードまたはサーバーモード)、などの情報が継承されます。作成された SSLSocket
に継承された状態は、対応するメソッドを呼び出してオーバーライドできます。
ServerSocket
, SSLSocket
修飾子 | コンストラクタと説明 |
---|---|
protected |
SSLServerSocket()
サブクラスでだけ使用されます。
|
protected |
SSLServerSocket(int port)
サブクラスでだけ使用されます。
|
protected |
SSLServerSocket(int port, int backlog)
サブクラスでだけ使用されます。
|
protected |
SSLServerSocket(int port, int backlog, InetAddress address)
サブクラスでだけ使用されます。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract String[] |
getEnabledCipherSuites()
新しく受け入れた接続で現在使用可能になっている暗号化方式群のリストを返します。
|
abstract String[] |
getEnabledProtocols()
新しく受け入れた接続で現在使用可能になっているプロトコル名を返します。
|
abstract boolean |
getEnableSessionCreation()
このサーバーソケットから作成されたソケットで、新しい SSL セッションを確立する場合は true を返します。
|
abstract boolean |
getNeedClientAuth()
新しく
accept されたサーバーモードの SSLSocket 上でクライアント認証が必要な場合は true を返します。 |
SSLParameters |
getSSLParameters()
新しく受け入れられた接続で有効な SSLParameters を返します。
|
abstract String[] |
getSupportedCipherSuites()
SSL 接続で使用可能にできる暗号化方式群の名前を返します。
|
abstract String[] |
getSupportedProtocols()
使用可能にできるプロトコルの名前を返します。
|
abstract boolean |
getUseClientMode()
受け入れた接続が SSL クライアントモードになる場合は true を返します。
|
abstract boolean |
getWantClientAuth()
新しく受け入れられたサーバーモードの接続上でクライアント認証が要求される場合は 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 が、クライアント認証を要求するように初期構成されるかどうかを制御します。 |
accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, toString
protected SSLServerSocket() throws IOException
デフォルトの認証コンテキストを使用して、バインドされていない TCP サーバーソケットを作成します。
IOException
- ソケットの作成時に入出力エラーが発生した場合protected SSLServerSocket(int port) throws IOException
デフォルトの認証コンテキストを使用して、ポート上に TCP サーバーソケットを作成します。キューに格納される接続バックログの最大数は、デフォルトで 50 に設定されています。キュー内の接続要求が最大数を超えると、新しい接続要求は拒否されます。
ポート番号に 0
を指定すると、いずれかの空いているポート上でソケットが作成されます。
セキュリティーマネージャーが存在する場合、この操作が許可されるように、その checkListen
メソッドが port
引数をその引数として指定して呼び出されます。この結果、SecurityException がスローされることがあります。
port
- 待機するポートIOException
- ソケットの作成時に入出力エラーが発生した場合SecurityException
- セキュリティーマネージャーが存在し、その checkListen
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。SecurityManager.checkListen(int)
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) 外である場合。SecurityManager.checkListen(int)
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) 外である場合。SecurityManager.checkListen(int)
public abstract String[] getEnabledCipherSuites()
このリストが明示的に変更されていない場合は、システムデフォルトにより、使用可能なすべての暗号化方式群で、最小限のサービス品質が保証されます。
実際に使用する暗号化方式群は、要件に応じて適切に選択してください。たとえば、サーバーソケットがなんらかの認証を要求するように設定されているときに、暗号化方式群で使用できる非公開鍵がサーバーソケットに割り当てられていない場合、または暗号化方式群が匿名であるためクライアント認証を使用できない場合、それらの暗号化方式群は実際には使用できません。
getSupportedCipherSuites()
, setEnabledCipherSuites(String [])
public abstract void setEnabledCipherSuites(String[] suites)
暗号化方式群は、getSupportedCipherSuites() により、サポート対象としてリストされていなければいけません。このメソッドの呼び出しが成功したあと、suites
パラメータに示されている暗号化方式群のみが使用可能になります。
この ServerSocket の認証コンテキストで使用できない認証情報を要求する暗号化方式群は、たとえ有効になっていても使用されません。
accept()
から返された SSLSocket
は、この設定を継承します。
suites
- 有効にするすべての暗号化方式群の名前IllegalArgumentException
- パラメータに指定された暗号化方式群の一部がサポートされない場合、またはパラメータが null である場合。getSupportedCipherSuites()
, getEnabledCipherSuites()
public abstract String[] getSupportedCipherSuites()
通常は、その一部だけがデフォルトで使用可能になります。デフォルトのサービス品質要件を満たしていない暗号化方式群は、使用不可になります。それらの暗号化方式群は、特殊なアプリケーションで使用します。
getEnabledCipherSuites()
, setEnabledCipherSuites(String [])
public abstract String[] getSupportedProtocols()
getEnabledProtocols()
, setEnabledProtocols(String [])
public abstract String[] getEnabledProtocols()
getSupportedProtocols()
, setEnabledProtocols(String [])
public abstract void setEnabledProtocols(String[] protocols)
プロトコルは、getSupportedProtocols() により、サポート対象としてリストされていなければいけません。このメソッドの呼び出しが成功したあと、protocols
パラメータに示されているプロトコルのみが使用可能になります。
accept()
から返された SSLSocket
は、この設定を継承します。
protocols
- 有効にするすべてのプロトコルの名前。IllegalArgumentException
- パラメータで指定されたプロトコルの 1 つ以上がサポートされていないか、または protocols パラメータが null である場合。getEnabledProtocols()
, getSupportedProtocols()
public abstract void setNeedClientAuth(boolean need)
accept
されたサーバーモードの SSLSockets
が、クライアント認証が必要なように初期構成されるかどうかを制御します。
ソケットのクライアント認証設定は、次のいずれかになります。
setWantClientAuth(boolean)
と異なり、受け入れたソケットのオプションが設定されていて、かつクライアント認証情報が提供されない場合は、ネゴシエーションが停止し、接続が切断されます。
このメソッドを呼び出すと、このメソッドまたは setWantClientAuth(boolean)
によって行われた以前の設定がすべてオーバーライドされます。
SSLSocket.setNeedClientAuth(boolean)
または SSLSocket.setWantClientAuth(boolean)
を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。
need
- クライアント認証が必要な場合は true に、クライアント認証が不要な場合は false に設定される。getNeedClientAuth()
, setWantClientAuth(boolean)
, getWantClientAuth()
, setUseClientMode(boolean)
public abstract boolean getNeedClientAuth()
accept
されたサーバーモードの SSLSocket
上でクライアント認証が必要な場合は true を返します。
SSLSocket.setNeedClientAuth(boolean)
または SSLSocket.setWantClientAuth(boolean)
を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。
setNeedClientAuth(boolean)
, setWantClientAuth(boolean)
, getWantClientAuth()
, setUseClientMode(boolean)
public abstract void setWantClientAuth(boolean want)
accept
されたサーバーモードの SSLSockets
が、クライアント認証を要求するように初期構成されるかどうかを制御します。
ソケットのクライアント認証設定は、次のいずれかになります。
setNeedClientAuth(boolean)
と異なり、受け入れたソケットのオプションが設定されていて、かつクライアント認証情報が提供されない場合でも、ネゴシエーションは続行されます。
このメソッドを呼び出すと、このメソッドまたは setNeedClientAuth(boolean)
によって行われた以前の設定がすべてオーバーライドされます。
SSLSocket.setNeedClientAuth(boolean)
または SSLSocket.setWantClientAuth(boolean)
を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。
want
- クライアント認証が要求されている場合は true に、クライアント認証が不要な場合は false に設定される。getWantClientAuth()
, setNeedClientAuth(boolean)
, getNeedClientAuth()
, setUseClientMode(boolean)
public abstract boolean getWantClientAuth()
SSLSocket.setNeedClientAuth(boolean)
または SSLSocket.setWantClientAuth(boolean)
を呼び出すことによって、継承された初期の設定がオーバーライドされる可能性があります。
setWantClientAuth(boolean)
, setNeedClientAuth(boolean)
, getNeedClientAuth()
, setUseClientMode(boolean)
public abstract void setUseClientMode(boolean mode)
通常、サーバーは自身を認証しますが、クライアントは必ずしもそうとはかぎりません。
新しく受け入れた接続が、SSL クライアントモードの TCP サーバーを要求することがあります。たとえば、FTP クライアントは、サーバーソケットを取得すると、そのソケット上でサーバーからの接続を待機します。FTP クライアントは、サーバーからの接続を受け入れるときに、クライアントモードの SSLServerSocket を使用します。 FTP サーバーは、接続を開始するときにクライアントモードを無効にした SSLSocket を使用します。この場合、ハンドシェークを行うときは、既存の SSL セッションが再利用されます。
accept()
から返された SSLSocket
は、この設定を継承します。
mode
- 新しく受け入れた接続が SSL クライアントモードを使用する場合は true。getUseClientMode()
public abstract boolean getUseClientMode()
setUseClientMode(boolean)
public abstract void setEnableSessionCreation(boolean flag)
accept()
から返された SSLSocket
は、この設定を継承します。
flag
- セッションを作成できる場合は true (デフォルト)。既存のセッションを再開する場合は false。getEnableSessionCreation()
public abstract boolean getEnableSessionCreation()
setEnableSessionCreation(boolean)
public SSLParameters getSSLParameters()
setSSLParameters(SSLParameters)
public void setSSLParameters(SSLParameters params)
これは次のことを意味します。
params.getCipherSuites()
が null 以外の場合は、その値を使用して setEnabledCipherSuites()
が呼び出される
params.getProtocols()
が null 以外の場合は、その値を使用して setEnabledProtocols()
が呼び出される
params.getNeedClientAuth()
または params.getWantClientAuth()
が true
を返した場合は、それぞれ setNeedClientAuth(true)
と setWantClientAuth(true)
が呼び出される。それ以外の場合は setWantClientAuth(false)
が呼び出される。
params
- パラメータIllegalArgumentException
- setEnabledCipherSuites() または setEnabledProtocols() の呼び出しが失敗した場合getSSLParameters()
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.