JavaTM 2 Platform
Standard Ed. 5.0

javax.net.ssl
インタフェース SSLSession


public interface SSLSession

SSL では、2 つのエンティティ間で進行中の関係がセッションと呼ばれます。1 つの SSL 接続では、一度に 1 つのセッションが使用されます。ただし、そのセッションは、同じエンティティ間の複数の接続で、同時にまたは連続して使用されます。1 つの接続で使用されるセッションを別のセッションで置き換えることもできます。セッションの作成または参加は、SSL ハンドシェークのときに行われます。セッションを無効にするには、セキュリティまたは資源使用状況に関連するポリシーを使用するか、アプリケーションから明示的に invalidate を呼び出します。セッション管理ポリシーは通常、パフォーマンスを調整するときに使用します。

SSL セッションには、標準セッション属性以外に、次の読み込み専用属性があります。

セッションは、明示的に無効にします。特定の種類のエラーが発生したときは、暗黙的に無効になります。

導入されたバージョン:
1.4

メソッドの概要
 int getApplicationBufferSize()
          このセッションの使用中に発生する可能性があるアプリケーションバッファの最大サイズを取得します。
 String getCipherSuite()
          このセッションのすべての接続に使用される SSL 符号化方式の名前を返します。
 long getCreationTime()
          このセッションが作成された時刻を、UTC 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
 byte[] getId()
          このセッションに割り当てられた識別子を返します。
 long getLastAccessedTime()
          このセッションがセッションレベルのインフラストラクチャによって最後にアクセスされた時刻を、UTC 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
 Certificate[] getLocalCertificates()
          ハンドシェーク中にピアに送信された証明書を返します。
 Principal getLocalPrincipal()
          ハンドシェーク中にピアに送信された主体を返します。
 int getPacketBufferSize()
          このセッションの使用中に発生する可能性がある SSL/TLS パケットの最大サイズを取得します。
 X509Certificate[] getPeerCertificateChain()
          セッションを定義するときに識別された、ピアの識別情報を返します。
 Certificate[] getPeerCertificates()
          セッションを定義するときに設定された、ピアの識別情報を返します。
 String getPeerHost()
          このセッションのピアホスト名を返します。
 int getPeerPort()
          このセッションのピアのポート番号を返します。
 Principal getPeerPrincipal()
          セッションを定義するときに設定された、ピアの識別情報を返します。
 String getProtocol()
          このセッションのすべての接続に使用されるプロトコルの標準名を返します。
 SSLSessionContext getSessionContext()
          このセッションがバインドされているコンテキストを返します。
 Object getValue(String name)
          このセッションのアプリケーション層データ内で、指定された名前にバインドされているオブジェクトを返します。
 String[] getValueNames()
          セッションにバインドされているアプリケーション層データオブジェクト名の配列を返します。
 void invalidate()
          セッションを無効にします。
 boolean isValid()
          再開や参加が可能な有効なセッションかどうかを返します。
 void putValue(String name, Object value)
          指定された name を使用して、指定された value オブジェクトをこのセッションのアプリケーション層データにバインドします。
 void removeValue(String name)
          セッションのアプリケーション層データで、指定された名前にバインドされたオブジェクトを削除します。
 

メソッドの詳細

getId

byte[] getId()
このセッションに割り当てられた識別子を返します。

戻り値:
セッション識別子

getSessionContext

SSLSessionContext getSessionContext()
このセッションがバインドされているコンテキストを返します。

コンテキストは、一部の環境では取得できません。その場合は null を返します。

コンテキストが取得できる環境にセキュリティマネージャがインストールされている場合は、呼び出すときにコンテキストに対するアクセス権が必要になることがあります。その場合、アクセス権がないときは、セキュリティ例外がスローされます。Java 2 環境では、セキュリティマネージャの checkPermission メソッドを呼び出すときには、SSLPermission("getSSLSessionContext") アクセス権が必要です。

戻り値:
このセッションに使用されているセッションコンテキスト。コンテキストを取得できない場合は null

getCreationTime

long getCreationTime()
このセッションが作成された時刻を、UTC 1970年 1 月 1 日 0 時からのミリ秒単位で返します。

戻り値:
このセッションが作成された時刻

getLastAccessedTime

long getLastAccessedTime()
このセッションがセッションレベルのインフラストラクチャによって最後にアクセスされた時刻を、UTC 1970年 1 月 1 日 0 時からのミリ秒単位で返します。

アクセスとは、セッションデータを使用して新しい接続が確立されることを指します。セッション関連の値を取得または設定するなど、アプリケーションレベルの操作はこのアクセス時間に反映されません。

この情報は、特にセッション管理ポリシーで使用します。たとえば、長時間使用されていないコンテキストでセッションマネージャスレッドからセッションを解放したり、セッションを経過時間でソートしてタスクを最適化したりします。

戻り値:
このセッションが最後にアクセスされた時間

invalidate

void invalidate()
セッションを無効にします。

後続の接続では、このセッションを使用できません。ただし、このセッションを使用している既存の接続は、接続が閉じるまで引き続き使用できます。

関連項目:
isValid()

isValid

boolean isValid()
再開や参加が可能な有効なセッションかどうかを返します。

戻り値:
このセッションへの参加が可能な場合は true
導入されたバージョン:
1.5
関連項目:
invalidate()

putValue

void putValue(String name,
              Object value)
指定された name を使用して、指定された value オブジェクトをこのセッションのアプリケーション層データにバインドします。

同じ name を使用している既存のバインディングは置き換えられます。新しい (または既存の) valueSSLSessionBindingListener インタフェースを実装している場合、value によって表されるオブジェクトには適切な方法で通知されます。

セキュリティ上の理由から、同じ名前の値は複数のアクセス制御コンテキストにまたがって表示できません。

パラメータ:
name - データオブジェクトがバインドされる名前。null は不可
value - バインドされるデータオブジェクト。null は不可
例外:
IllegalArgumentException - どちらかの引数が null の場合

getValue

Object getValue(String name)
このセッションのアプリケーション層データ内で、指定された名前にバインドされているオブジェクトを返します。バインディングが存在しない場合は null を返します。

セキュリティ上の理由から、同じ名前の値は複数のアクセス制御コンテキストにまたがって表示できません。

パラメータ:
name - 検索するバインディングの名前
戻り値:
指定された名前にバインドされた値。バインディングが存在しない場合は null
例外:
IllegalArgumentException - 引数が null の場合

removeValue

void removeValue(String name)
セッションのアプリケーション層データで、指定された名前にバインドされたオブジェクトを削除します。指定された名前にバインドされたオブジェクトが存在しない場合は、適用されません。バインドされた既存のオブジェクトが SessionBindingListener インタフェースを実装している場合は、そのインタフェースに適切な方法で通知されます。

セキュリティ上の理由から、同じ名前の値は複数のアクセス制御コンテキストにまたがって表示できません。

パラメータ:
name - 削除するオブジェクトの名前。複数のアクセス制御コンテキストにまたがって表示できる
例外:
IllegalArgumentException - 引数が null の場合

getValueNames

String[] getValueNames()
セッションにバインドされているアプリケーション層データオブジェクト名の配列を返します。

セキュリティ上の理由から、同じ名前の値は複数のアクセス制御コンテキストにまたがって表示できません。

戻り値:
このセッションにバインドされているオブジェクト名の、null (空の場合もある) でない配列

getPeerCertificates

Certificate[] getPeerCertificates()
                                  throws SSLPeerUnverifiedException
セッションを定義するときに設定された、ピアの識別情報を返します。

注: このメソッドを使用できるのは、証明書ベースの符号化方式を使用している場合だけです。Kerberos などの証明書ベースでない符号化方式にこのメソッドを使用すると、SSLPeerUnverifiedException がスローされます。

戻り値:
ピア証明書の配列。ピア自身の証明書、証明書発行局の順序に並んでいる
例外:
SSLPeerUnverifiedException - ピアの識別情報が確認できなかった場合
関連項目:
getPeerPrincipal()

getLocalCertificates

Certificate[] getLocalCertificates()
ハンドシェーク中にピアに送信された証明書を返します。

注: このメソッドが役立つのは、証明書ベースの符号化方式を使用している場合だけです。

ハンドシェークを行うときに複数の証明書を使用できる場合は、最適な証明書チェーンが選択され、ピアに送信されます。呼び出し側は、このメソッドを使用して、実際に使用された証明書チェーンを把握することができます。

戻り値:
証明書の配列。ローカル証明書、証明書発行局の順序に並んでいる。証明書が送信されなかった場合は、null が返される
関連項目:
getLocalPrincipal()

getPeerCertificateChain

X509Certificate[] getPeerCertificateChain()
                                          throws SSLPeerUnverifiedException
セッションを定義するときに識別された、ピアの識別情報を返します。

注: このメソッドを使用できるのは、証明書ベースの符号化方式を使用している場合だけです。Kerberos などの証明書ベースでない符号化方式にこのメソッドを使用すると、SSLPeerUnverifiedException がスローされます。

注: このメソッドは、以前のリリースとの互換性を確保するために組み込まれています。新しいアプリケーションでは、getPeerCertificates() を使用してください。

戻り値:
ピアの X.509 証明書の配列。ピア自身の証明書、証明書発行局の順序で並んでいる。証明書の形式は、元の JSSE 証明書 X509Certificate 形式である
例外:
SSLPeerUnverifiedException - ピアの識別情報が確認できなかった場合
関連項目:
getPeerPrincipal()

getPeerPrincipal

Principal getPeerPrincipal()
                           throws SSLPeerUnverifiedException
セッションを定義するときに設定された、ピアの識別情報を返します。

戻り値:
ピアの主体。X509 ベースの符号化方式の場合はエンドエンティティ証明書の X500Principal を返し、Kerberos 符号化方式の場合は KerberosPrincipal を返す
例外:
SSLPeerUnverifiedException - ピアの識別情報が確認できなかった場合
導入されたバージョン:
1.5
関連項目:
getPeerCertificates(), getLocalPrincipal()

getLocalPrincipal

Principal getLocalPrincipal()
ハンドシェーク中にピアに送信された主体を返します。

戻り値:
ピアに送信された主体。X509 ベースの符号化方式の場合はエンドエンティティ証明書の X500Principal を返し、Kerberos 符号化方式の場合は KerberosPrincipal を返す。主体が送信されなかった場合は null を返す
導入されたバージョン:
1.5
関連項目:
getLocalCertificates(), getPeerPrincipal()

getCipherSuite

String getCipherSuite()
このセッションのすべての接続に使用される SSL 符号化方式の名前を返します。

SSL 符号化方式は、使用される暗号の種類や認証方法の設定など、接続時に送信されるデータに適用される保護のレベルを決定します。

戻り値:
セッションの符号化方式の名前

getProtocol

String getProtocol()
このセッションのすべての接続に使用されるプロトコルの標準名を返します。

このプロトコルには、接続で使用されるプロトコルを定義します。

戻り値:
このセッションのすべての接続に使用されるプロトコルの標準名

getPeerHost

String getPeerHost()
このセッションのピアホスト名を返します。

サーバの場合は、クライアントのホスト名になります。クライアントの場合は、サーバのホスト名になります。この名前は、完全指定のホスト名や実際のホスト名ではなく、ピアホストのネットワークアドレスの文字列エンコーディングです。完全指定のホスト名や実際のホスト名が必要な場合は、このメソッドから返された値に基づいてネームサービスを使用すれば解決できます。

この値は認証されていないため、実際に使用することはできません。主に、SSLSession のキャッシュ方法に関するヒントとして使用されます。

戻り値:
ピアホストのホスト名。情報がない場合は null

getPeerPort

int getPeerPort()
このセッションのピアのポート番号を返します。

サーバの場合は、クライアントのポート番号になります。クライアントの場合は、サーバのポート番号になります。

この値は認証されていないため、実際に使用することはできません。主に、SSLSession のキャッシュ方法に関するヒントとして使用されます。

戻り値:
ピアホストのポート番号。情報がない場合は -1
導入されたバージョン:
1.5

getPacketBufferSize

int getPacketBufferSize()
このセッションの使用中に発生する可能性がある SSL/TLS パケットの最大サイズを取得します。

このセッションを使用している SSLEngine は、このメソッドから返された値以下で、任意のサイズの SSL/TLS パケットを生成できます。wrapunwrap の実行時に容量不足の問題を防ぐために、SSLEngine のネットワークバッファのサイズはすべてこの値以上にしてください。

戻り値:
ネットワークパケットの最大サイズ
導入されたバージョン:
1.5
関連項目:
SSLEngine.wrap(ByteBuffer, ByteBuffer), SSLEngine.unwrap(ByteBuffer, ByteBuffer)

getApplicationBufferSize

int getApplicationBufferSize()
このセッションの使用中に発生する可能性があるアプリケーションバッファの最大サイズを取得します。

SSLEngine のアプリケーションデータバッファには、着信するアプリケーションデータパケットに含まれているアプリケーションデータを保持するために十分なサイズが必要です。通常、送信アプリケーションデータバッファは、どのようなサイズでもかまいません。

戻り値:
アプリケーションパケットの最大サイズ
導入されたバージョン:
1.5
関連項目:
SSLEngine.wrap(ByteBuffer, ByteBuffer), SSLEngine.unwrap(ByteBuffer, ByteBuffer)

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 も参照してください。