JavaTM 2 Platform
Standard Ed. 5.0

javax.net.ssl
クラス SSLServerSocket

java.lang.Object
  上位を拡張 java.net.ServerSocket
      上位を拡張 javax.net.ssl.SSLServerSocket

public abstract class SSLServerSocket
extends ServerSocket

このクラスは ServerSocket を拡張し、Secure Sockets Layer (SSL) や Transport Layer Security (TLS) などのプロトコルを使用するセキュアサーバソケットを提供します。

このクラスのインスタンスを作成するときは、通常、SSLServerSocketFactory を使用します。SSLServerSocket は、接続を accept して SSLSocket を作成します。

SSLServerSocket の一部の状態データは、作成される SSLSocket に継承されます。たとえば、有効になっている符号化方式とプロトコル、クライアント認証が必要かどうか、このソケットがハンドシェークを開始するときのモード (クライアントモードまたはサーバモード)、などの情報が継承されます。作成された SSLSocket に継承された状態は、対応するメソッドを呼び出してオーバーライドできます。

導入されたバージョン:
1.4
関連項目:
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()
          新しく受け入れたサーバモードの SSLSocket 上でクライアント認証が「必須」の場合、true を返します。
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)
          受け入れたサーバモードの SSLSockets で、クライアント認証が「必須」とされるように初期設定するかどうかを制御します。
abstract  void setUseClientMode(boolean mode)
          受け入れた接続がデフォルトで SSL サーバモードになるか、SSL クライアントモードになるかを制御します。
abstract  void setWantClientAuth(boolean want)
          受け入れたサーバモードの SSLSockets が、クライアント認証を「要求」するように初期設定するかどうかを制御します。
 
クラス java.net.ServerSocket から継承されたメソッド
accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, toString
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

SSLServerSocket

protected SSLServerSocket()
                   throws IOException
サブクラスだけで使用されます。

デフォルトの認証コンテキストを使用して、バインドされていない TCP サーバソケットを作成します。

例外:
IOException - ソケットの作成中に入出力エラーが発生した場合

SSLServerSocket

protected SSLServerSocket(int port)
                   throws IOException
サブクラスだけで使用されます。

デフォルトの認証コンテキストを使用して、ポート上に TCP サーバソケットを作成します。キューに格納される接続バックログの最大数は、デフォルトで 50 に設定されています。キュー内の接続要求が最大数を超えると、新しい接続要求は拒否されます。

パラメータ:
port - 待機するポート
例外:
IOException - ソケットの作成中に入出力エラーが発生した場合

SSLServerSocket

protected SSLServerSocket(int port,
                          int backlog)
                   throws IOException
サブクラスだけで使用されます。

デフォルトの認証コンテキストと、指定された接続バックログを使用して、ポート上に TCP サーバソケットを作成します。

パラメータ:
port - 待機するポート
backlog - 最大保留接続数。この接続数を超えると、新しい要求が拒否される
例外:
IOException - ソケットの作成中に入出力エラーが発生した場合

SSLServerSocket

protected SSLServerSocket(int port,
                          int backlog,
                          InetAddress address)
                   throws IOException
サブクラスだけで使用されます。

デフォルトの認証コンテキスト、指定された接続バックログ、および指定されたネットワークインタフェースを使用して、ポート上に TCP サーバソケットを作成します。このコンストラクタは、ファイアウォールやルータとして使用されるマルチホームホスト上で使用され、ネットワークサービスを提供するインタフェースを制御します。

パラメータ:
port - 待機するポート
backlog - 最大保留接続数。この接続数を超えると、新しい要求が拒否される
address - 接続を受け入れるネットワークインタフェースのアドレス
例外:
IOException - ソケットの作成中に入出力エラーが発生した場合
メソッドの詳細

getEnabledCipherSuites

public abstract String[] getEnabledCipherSuites()
新しく受け入れた接続で現在使用可能になっている符号化方式のリストを返します。

このリストが明示的に変更されていない場合は、システムデフォルトにより、使用可能なすべての符号化方式で、最小限のサービス品質が保証されます。

実際に使用する符号化方式は、要件に応じて適切に選択してください。たとえば、サーバソケットがなんらかの認証を要求するように設定されているときに、符号化方式で使用できる非公開鍵がサーバソケットに割り当てられていない場合、または符号化方式が匿名であるためクライアント認証を使用できない場合、それらの符号化方式は実際には使用できません。

戻り値:
使用可能な符号化方式の配列
関連項目:
getSupportedCipherSuites(), setEnabledCipherSuites(String [])

setEnabledCipherSuites

public abstract void setEnabledCipherSuites(String[] suites)
受け入れられた接続で使用可能な符号化方式を設定します。

符号化方式は、getSupportedCipherSuites() により、サポート対象としてリストされていなければなりません。このメソッドの呼び出しが正常に行われたとき、suites パラメータにリストされた符号化方式のみ、使用することができます。

この ServerSocket の認証コンテキストで使用できない認証情報を要求する符号化方式は、たとえ有効になっていても使用されません。

accept() から返される SSLSocket は、この設定を継承します。

パラメータ:
suites - 使用可能にするすべての符号化方式の名前
例外:
IllegalArgumentException - パラメータに指定された符号化方式の一部がサポートされない場合、またはパラメータが null の場合
関連項目:
getSupportedCipherSuites(), getEnabledCipherSuites()

getSupportedCipherSuites

public abstract String[] getSupportedCipherSuites()
SSL 接続で使用可能にする符号化方式の名前を返します。

通常、デフォルトで実際に有効になっているのは、これらのサブセットのみです。このリストには、デフォルトのサービス品質の要件を満たさない符号化方式が含まれているからです。こうした符号化方式は、特殊なアプリケーションで利用されます。

戻り値:
符号化方式名の配列
関連項目:
getEnabledCipherSuites(), setEnabledCipherSuites(String [])

getSupportedProtocols

public abstract String[] getSupportedProtocols()
使用可能にできるプロトコルの名前を返します。

戻り値:
サポートされているプロトコル名の配列
関連項目:
getEnabledProtocols(), setEnabledProtocols(String [])

getEnabledProtocols

public abstract String[] getEnabledProtocols()
新しく受け入れた接続で現在使用可能になっているプロトコル名を返します。

戻り値:
プロトコル名の配列
関連項目:
getSupportedProtocols(), setEnabledProtocols(String [])

setEnabledProtocols

public abstract void setEnabledProtocols(String[] protocols)
受け入れた接続で使用可能なプロトコルを制御します。

プロトコルは、getSupportedProtocols() により、サポート対象としてリストされていなければなりません。このメソッドの呼び出しが正常に行われたとき、protocols パラメータにリストされたプロトコルのみ、使用することができます。

accept() から返される SSLSocket は、この設定を継承します。

パラメータ:
protocols - 使用可能にするすべてのプロトコルの名前
例外:
IllegalArgumentException - パラメータに指定されたプロトコルの一部がサポートされない場合、またはパラメータが null の場合
関連項目:
getEnabledProtocols(), getSupportedProtocols()

setNeedClientAuth

public abstract void setNeedClientAuth(boolean need)
受け入れたサーバモードの SSLSockets で、クライアント認証が「必須」とされるように初期設定するかどうかを制御します。

ソケットのクライアント認証設定は、次のいずれかになります。

setWantClientAuth(boolean) と異なり、受け入れたソケットのオプションが設定されていて、かつクライアント認証情報が提供されない場合は、ネゴシエーションが停止し、接続が切断されます。

このメソッドを呼び出すと、これまでにこのメソッドまたは setWantClientAuth(boolean) によって設定された内容がオーバーライドされます。

SSLSocket.setNeedClientAuth(boolean) または SSLSocket.setWantClientAuth(boolean) を呼び出すと、継承された初期設定がオーバーライドされます。

パラメータ:
need - クライアント認証が必須の場合は true、クライアント認証が不要な場合は false
関連項目:
getNeedClientAuth(), setWantClientAuth(boolean), getWantClientAuth(), setUseClientMode(boolean)

getNeedClientAuth

public abstract boolean getNeedClientAuth()
新しく受け入れたサーバモードの SSLSocket 上でクライアント認証が「必須」の場合、true を返します。

SSLSocket.setNeedClientAuth(boolean) または SSLSocket.setWantClientAuth(boolean) を呼び出すと、継承された初期設定がオーバーライドされます。

戻り値:
クライアント認証が必須の場合は true、クライアント認証が不要な場合は false
関連項目:
setNeedClientAuth(boolean), setWantClientAuth(boolean), getWantClientAuth(), setUseClientMode(boolean)

setWantClientAuth

public abstract void setWantClientAuth(boolean want)
受け入れたサーバモードの SSLSockets が、クライアント認証を「要求」するように初期設定するかどうかを制御します。

ソケットのクライアント認証設定は、次のいずれかになります。

setNeedClientAuth(boolean) と異なり、受け入れたソケットのオプションが設定されていて、かつクライアント認証情報が提供されない場合でも、ネゴシエーションは続行されます。

このメソッドを呼び出すと、これまでにこのメソッドまたは setNeedClientAuth(boolean) によって設定された内容がオーバーライドされます。

SSLSocket.setNeedClientAuth(boolean) または SSLSocket.setWantClientAuth(boolean) を呼び出すと、継承された初期設定がオーバーライドされます。

パラメータ:
want - クライアント認証が要求された場合は true、クライアント認証が不要な場合は false
関連項目:
getWantClientAuth(), setNeedClientAuth(boolean), getNeedClientAuth(), setUseClientMode(boolean)

getWantClientAuth

public abstract boolean getWantClientAuth()
新しく受け入れたサーバモードの接続上でクライアント認証が「要求」される場合、true を返します。

SSLSocket.setNeedClientAuth(boolean) または SSLSocket.setWantClientAuth(boolean) を呼び出すと、継承された初期設定がオーバーライドされます。

戻り値:
クライアント認証が要求された場合は true、クライアント認証が不要な場合は false
関連項目:
setWantClientAuth(boolean), setNeedClientAuth(boolean), getNeedClientAuth(), setUseClientMode(boolean)

setUseClientMode

public abstract void setUseClientMode(boolean mode)
受け入れた接続がデフォルトで SSL サーバモードになるか、SSL クライアントモードになるかを制御します。

通常、サーバは自身を認証しますが、クライアントは必ずしもそうとは限りません。

新しく受け入れた接続が、SSL クライアントモードの TCP サーバを要求することがあります。たとえば、FTP クライアントは、サーバソケットを取得すると、そのソケット上でサーバからの接続を待機します。FTP クライアントは、サーバからの接続を受け入れるときに、クライアントモードの SSLServerSocket を使用します。FTP サーバは、接続を開始するときにクライアントモードを無効にした SSLSocket を使用します。この場合、ハンドシェークを行うときは、既存の SSL セッションが再利用されます。

accept() から返される SSLSocket は、この設定を継承します。

パラメータ:
mode - 新しく受け入れた接続が SSL クライアントモードを使用する場合は true
関連項目:
getUseClientMode()

getUseClientMode

public abstract boolean getUseClientMode()
受け入れた接続が SSL クライアントモードになる場合は true を返します。

戻り値:
接続が SSL クライアントモードを使用する場合は true
関連項目:
setUseClientMode(boolean)

setEnableSessionCreation

public abstract void setEnableSessionCreation(boolean flag)
このサーバソケットから作成されたソケットで、新しい SSL セッションを確立するかどうかを制御します。

accept() から返される SSLSocket は、この設定を継承します。

パラメータ:
flag - セッションを作成する場合は true (デフォルト)。既存のセッションを再開する場合は false
関連項目:
getEnableSessionCreation()

getEnableSessionCreation

public abstract boolean getEnableSessionCreation()
このサーバソケットから作成されたソケットで、新しい SSL セッションを確立する場合は true を返します。

戻り値:
セッションを作成する場合は true (デフォルト)。既存のセッションを再開する場合は false
関連項目:
setEnableSessionCreation(boolean)

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。