Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
ホーム  |  パッケージおよびクラスリストの非表示 |  パッケージ  |  クラス  |  新機能  |  索引  |  付録  |  英語で表示される理由
フィルター: サーバーからデータを取得しています...
サーバーからデータを取得しています...
flash.net 

SecureSocket  - AS3

パッケージflash.net
クラスpublic class SecureSocket
継承SecureSocket Inheritance Socket Inheritance EventDispatcher Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

SecureSocket クラスを使用すると、コード内のソケット接続で、Secure Sockets Layer(SSL)プロトコルおよび Transport Layer Security(TLS)プロトコルを利用することができます。

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、一部の AIR for TV デバイスではサポートされません。モバイルデバイスでは、Android でサポートされています。また、AIR 20 以降では、iOS でもサポートされています。SecureSocket.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

SSL/TLS プロトコルには、セキュアソケット接続の両面を処理するためのメカニズムが用意されています。

  1. ソケット経由でのデータ通信の暗号化
  2. ホストの証明書を通じた ID の認証

サポートされている暗号化プロトコルは SSL 3.1 以降、および TLS 1.0 以降です(TLS は SSL の後継プロトコルです。TLS 1.0 は SSL 3.1 に相当し、TLS 1.1 は SSL 3.2 に相当するといった具合に対応します)。SSL バージョン 3.0 以下はサポートされていません。

サーバー証明書の検証は、信頼ストアとクライアントプラットフォームの証明書検証サポートを使用して実行されます。また、addBinaryChainBuildingCertificate() を使用してプログラムから独自の証明書を追加することもできます。現在、この API は iOS ではサポートされていません。iOS でこの API を使用すると、「ArgumentError:エラー番号 2004」という例外がスローされます。

SecureSocket クラスは、信頼できる有効な証明書を備えたサーバーにのみ接続します。サーバーの証明書に問題がある場合には、そのサーバーへの接続を選択することはできません。例えば、証明書の有効期限が切れているサーバーに接続する方法はありません。また、信頼アンカー証明書にチェーンしていない証明書でも同様です。それ以外の場合、証明書が有効であっても、接続は行われません。

SecureSocket クラスは、信頼できるサーバーに対して暗号化通信を行う場合に役立ちます。その他の点では、SecureSocket オブジェクトは、通常の Socket オブジェクトと同様に動作します。

SecureSocket クラスを使用するには、SecureSocket オブジェクト(new SecureSocket())を作成します。次に、リスナーをセットアップし、SecureSocket.connect(host, port) を実行します。サーバーへの接続が正常に終了すると、ソケットによって connect イベントが送出されます。正常な接続とは、サーバーのセキュリティプロトコルがサポートされ、証明書が有効で信頼されている接続です。証明書を検証できなかった場合、ソケットは IOError イベントを送出します。

重要:OCSP(Online Certificate Status Protocol)は、一部のオペレーティングシステムではサポートされません。また、ユーザーは、個々のコンピューターで OCSP チェックを無効にすることができます。OCSP がサポートされていないか無効になっていて、さらに、CRL(証明書失効リスト)を使用して行われる失効確認に必要な情報が証明書に含まれていない場合、証明書失効の確認は行われません。失効以外の内容が有効であれば、証明書は受け入れられます。このシナリオでは、失効した証明書の使用をサーバーが許可するおそれがあります。

例を表示

関連する API エレメント



パブリックプロパティ
 プロパティ定義元
 InheritedbytesAvailable : uint
[読み取り専用] 入力バッファーで読み取ることができるデータのバイト数です。
Socket
 InheritedbytesPending : uint
[読み取り専用] 書き込みバッファーに残っているデータのバイト数を示します。
Socket
 Inheritedconnected : Boolean
[読み取り専用] この Socket オブジェクトが現在、接続されているかどうかを示します。
Socket
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。
Object
 Inheritedendian : String
データのバイト順を示します。
Socket
  isSupported : Boolean
[静的] [読み取り専用] 現在のシステムでセキュアソケットがサポートされているかどうかを示します。
SecureSocket
 Inherited    localAddress : String
[読み取り専用] ローカルマシン上でこのソケットがバインドされている IP アドレス。
Socket
 Inherited    localPort : int
[読み取り専用] ローカルマシン上でこのソケットがバインドされているポート。
Socket
 InheritedobjectEncoding : uint
オブジェクトの書き込みまたは読み取り時に使用される AMF のバージョンを制御します。
Socket
 Inherited    remoteAddress : String
[読み取り専用] このソケットが接続されているリモートマシンの IP アドレス。
Socket
 Inherited    remotePort : int
[読み取り専用] このソケットが接続されているリモートマシンのポート。
Socket
  serverCertificate : X509Certificate
[読み取り専用] セキュア SSL/TLS 接続の確立後、サーバーから取得した X.509 証明書を保持します。
SecureSocket
  serverCertificateStatus : String
[読み取り専用] サーバーの証明書のステータスが返されます。
SecureSocket
 Inheritedtimeout : uint
接続までの待ち時間(ミリ秒数)を示します。
Socket
パブリックメソッド
 メソッド定義元
  
新しい SecureSocket オブジェクトを作成します。
SecureSocket
  
サーバー証明書の検証に使用されるローカル証明書チェーンに X.509 証明書を追加します。
SecureSocket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
 Inherited
ソケットを閉じます。
Socket
  
connect(host:String, port:int):void
[オーバーライド] ソケットを、SSL または TLS を使用する指定されたホストおよびポートに接続します。
SecureSocket
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
 Inherited
ソケットの出力バッファーに蓄積されたデータをフラッシュします。
Socket
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ソケットからブール値を読み取ります。
Socket
 Inherited
ソケットから符号付きバイトを読み取ります。
Socket
 Inherited
readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
ソケットから、length パラメーターで指定したデータバイト数を読み取ります。
Socket
 Inherited
ソケットから IEEE 754 倍精度浮動小数点数を読み取ります。
Socket
 Inherited
ソケットから IEEE 754 単精度浮動小数点数を読み取ります。
Socket
 Inherited
ソケットから符号付き 32 ビット整数を読み取ります。
Socket
 Inherited
readMultiByte(length:uint, charSet:String):String
指定した文字セットを使用して、バイトストリームからマルチバイトストリングを読み取ります。
Socket
 Inherited
ソケットから AMF 直列化形式でエンコードされたオブジェクトを読み取ります。
Socket
 Inherited
ソケットから符号付き 16 ビット整数を読み取ります。
Socket
 Inherited
ソケットから符号なしバイトを読み取ります。
Socket
 Inherited
ソケットから符号なし 32 ビット整数を読み取ります。
Socket
 Inherited
ソケットから符号なし 16 ビット整数を読み取ります。
Socket
 Inherited
ソケットから UTF-8 ストリングを読み取ります。
Socket
 Inherited
ソケットから length パラメーターで指定した UTF-8 バイト数を読み取り、ストリングを返します。
Socket
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
 Inherited
ソケットにブール値を書き込みます。
Socket
 Inherited
ソケットに 1 バイトを書き込みます。
Socket
 Inherited
writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
指定したバイト配列のバイトのシーケンスを書き込みます。
Socket
 Inherited
ソケットに IEEE 754 倍精度浮動小数点数を書き込みます。
Socket
 Inherited
ソケットに IEEE 754 単精度浮動小数点数を書き込みます。
Socket
 Inherited
ソケットに 32 ビット符号付き整数を書き込みます。
Socket
 Inherited
指定した文字セットを使用して、バイトストリームからマルチバイトストリングを書き込みます。
Socket
 Inherited
ソケットに AMF 直列化形式でオブジェクトを書き込みます。
Socket
 Inherited
ソケットに 16 ビット整数を書き込みます。
Socket
 Inherited
ソケットに 32 ビット符号なし整数を書き込みます。
Socket
 Inherited
指定された UTF-8 ストリングの長さ(バイト単位)を示す 16 ビット符号なし整数をソケットに書き込み、その後にストリング自体を書き込みます。
Socket
 Inherited
ソケットに UTF-8 ストリングを書き込みます。
Socket
イベント
 イベント 概要 定義元
 Inherited[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
  サーバーによりソケット接続が閉じられたときに送出されます。SecureSocket
  ネットワーク接続が確立されたときに送出されます。SecureSocket
 Inherited[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
  入出力エラーが発生して送信または受信操作が失敗したときに送出されます。SecureSocket
 Inheritedソケットによってデータが書き込みバッファーからネットワークトランスポートレイヤーに移動されるときに送出されますSocket
  セキュリティ上の制限のために SecureSocket.connect() の呼び出しが失敗したときに送出されます。SecureSocket
  ソケットがデータを受信したときに送出されます。SecureSocket
プロパティの詳細

isSupported

プロパティ
isSupported:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

現在のシステムでセキュアソケットがサポートされているかどうかを示します。

セキュアソケットは、すべてのプラットフォームでサポートされているわけではありません。SecureSocket インスタンスを作成する前に、このプロパティをチェックします。



実装
    public static function get isSupported():Boolean

serverCertificate

プロパティ 
serverCertificate:X509Certificate  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

セキュア SSL/TLS 接続の確立後、サーバーから取得した X.509 証明書を保持します。セキュア接続が確立されていない場合、このプロパティは null に設定されます。現在、iOS ではサポートされていません。そのため、iOS では null に設定されます。

X.509 証明書について詳しくは、RFC2459 を参照してください。



実装
    public function get serverCertificate():X509Certificate

serverCertificateStatus

プロパティ 
serverCertificateStatus:String  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

サーバーの証明書のステータスが返されます。

ソケットがサーバーに接続しようと試みるまでは、ステータスは CertificateStatus.UNKNOWN です。検証後、ステータスは、CertificateStatus クラスによって列挙されたストリングのいずれかになります。接続は、証明書が有効で信頼されている場合にのみ、成功します。つまり、connect イベントの後、serverCertificateStatus の値は常に trusted です。

注意:いったん証明書が検証されるか拒否された後は、次に connect() メソッドを呼び出すまではステータス値は更新されません。close() を呼び出しても、ステータス値は "unknown" にリセットされません。



実装
    public function get serverCertificateStatus():String

関連する API エレメント

コンストラクターの詳細

SecureSocket

()コンストラクター
public function SecureSocket()

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

新しい SecureSocket オブジェクトを作成します。

SecureSocket インスタンスを作成する前に、SecureSocket.isSupported をチェックします。SSL 3.0 ソケットまたは TLS 1.0 ソケットがサポートされていない場合、ランタイムは IllegalOperationError をスローします。


例外
IllegalOperationError — SSL バージョン 3.0(およびそれ以降)、または TLS バージョン 1.0(およびそれ以降)はサポートされていません。
 
SecurityError — 信頼されていないローカル SWF ファイルはインターネットへの接続が許可されません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。
メソッドの詳細

addBinaryChainBuildingCertificate

()メソッド
public function addBinaryChainBuildingCertificate(certificate:ByteArray, trusted:Boolean):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

サーバー証明書の検証に使用されるローカル証明書チェーンに X.509 証明書を追加します。この証明書は一時的なもので、セッションの期間中、有効です。

サーバー証明書の検証では、システムの信頼ストアを利用して、証明書チェーンを構築および検証します。証明書チェーンと信頼アンカーをプログラムによって追加するには、このメソッドを使用します。

Mac OS では、SSL/TLS ハンドシェイクプロセス中にデフォルトキーチェーンとして、System キーチェーンが使用されます。そのキーチェーンに含まれる中間証明書はすべて、証明書チェーンの構築中に取り込まれます。

この API を使って追加する証明書は、DER エンコードされた X.509 証明書でなければなりません。trusted パラメーターが true の場合、この API を使って追加した証明書は、信頼アンカーと見なされます。

X.509 証明書について詳しくは、RFC2459 を参照してください。

パラメーター

certificate:ByteArray — DER エンコードされた X.509 電子証明書を含む ByteArray オブジェクトです。
 
trusted:Boolean — true に設定した場合、この証明書が信頼アンカーに指定されます。


例外
ArgumentError — 証明書を追加できない場合。

connect

()メソッド 
override public function connect(host:String, port:int):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

ソケットを、SSL または TLS を使用する指定されたホストおよびポートに接続します。

SecureSocket.connect() メソッドを呼び出した場合、ソケットはサーバーとの SSL/TLS ハンドシェイクを試みます。ハンドシェイクに成功すると、ソケットはサーバー証明書の検証を施行します。証明書が有効で信頼されている場合、セキュアソケット接続が確立され、ソケットは connect イベントを送出します。ハンドシェイクに失敗するか、証明書を検証できなかった場合は、IOError イベントが送出されます。証明書の検証結果を確認するには、IOError イベントが送出された後で、serverCertificateStatus プロパティを読み取ります(connect イベントが送出される場合、証明書ステータスは常に trusted です)。

ソケットが既に接続済みの場合、最初に既存の接続が閉じられます。

パラメーター

host:String — 接続するホストのホスト名または IP アドレスです。
 
port:int — 接続先のポート番号です。


イベント
connect:Event — ネットワーク接続が確立されたときに送出されます。
 
ioError:IOErrorEvent — ホストが指定されていて、入出力エラーが発生して接続が失敗した場合に送出されます。これには、SSL/TLS ハンドシェイクエラーや、ホストのサーバー証明書の検証の失敗が含まれます。
 
securityError:SecurityErrorEventSocket.connect() の呼び出しによって、ソケットポリシーファイルを提供しないサーバーや、特定のポートに対して呼び出し元のホストアクセスを許可しないポリシーファイルを持つサーバーに接続しようとしたときに送出されます。ポリシーファイルについて詳しくは、『ActionScript 3.0 開発ガイド』の「Web サイトのコントロール(ポリシーファイル)」および Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。

例外
IOError — ホストを指定せずに、接続に失敗した場合。
 
SecurityError — 0 未満、65535 より大きいソケットポートを指定した場合。
イベントの詳細

close

イベント
イベントオブジェクトの型: flash.events.Event
プロパティ Event.type = flash.events.Event.CLOSE

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

サーバーによりソケット接続が閉じられたときに送出されます。

close イベントは、サーバーにより接続が閉じられたときのみ送出されます。Socket.close() メソッドを呼び出しても送出されません。

Event.CLOSE 定数は、type プロパティ(close イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target接続が閉じられたオブジェクトです。

connect

イベント  
イベントオブジェクトの型: flash.events.Event
プロパティ Event.type = flash.events.Event.CONNECT

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

ネットワーク接続が確立されたときに送出されます。

Event.CONNECT 定数は、type プロパティ(connect イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetネットワーク接続を確立した Socket オブジェクトまたは XMLSocket オブジェクトです。

ioError

イベント  
イベントオブジェクトの型: flash.events.IOErrorEvent
プロパティ IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

入出力エラーが発生して送信または受信操作が失敗したときに送出されます。

サーバー証明書を検証できない場合、送出されるエラーイベントは IOError です。この場合は、serverCertificateStatus プロパティをチェックして、問題の原因を確認できます。

type プロパティ(ioError イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
errorID特定のエラーに関連付けられた参照番号です(AIR のみ)。
target入出力エラーが発生したネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。

securityError

イベント  
イベントオブジェクトの型: flash.events.SecurityErrorEvent
プロパティ SecurityErrorEvent.type = flash.events.SecurityErrorEvent.SECURITY_ERROR

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

セキュリティ上の制限のために SecureSocket.connect() の呼び出しが失敗したときに送出されます。

アプリケーションセキュリティサンドボックス外の Flash Player または AIR で実行するコードが別のドメインのサーバーまたは 1024 より下位のポートに接続しようとすると、セキュリティエラーイベントが送出され、サーバーは接続を許可するポリシーファイルを提供しません。AIR アプリケーションサンドボックス内で実行するコードは、ポリシーファイルがなくてもすべてのドメインのサーバーおよび 1024 より下位のポートに接続できます。

SecurityErrorEvent.SECURITY_ERROR 定数は、type プロパティ(securityError イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetセキュリティエラーを報告するネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。

関連する API エレメント

socketData

イベント  
イベントオブジェクトの型: flash.events.ProgressEvent
プロパティ ProgressEvent.type = flash.events.ProgressEvent.SOCKET_DATA

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 2

ソケットがデータを受信したときに送出されます。socketData タイプのイベントでは、ProgressEvent.bytesTotal プロパティは使用されません。

type プロパティ(socketData イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetEvent をアクティブに処理しているオブジェクトです。
bytesLoadedリスナーがイベントを処理しているときに読み込まれたアイテム数またはバイト数です。
bytesTotal0。このプロパティは、socketData イベントオブジェクトによって使用されません。
target進行状況をレポートするソケットです。
SecureSocketExample.as

次の例では、SecureSocket オブジェクトを作成および接続する方法を示します。
package
{
    import flash.display.Sprite;
    import flash.errors.IOError;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.SecureSocket;
    
    public class SecureSocketExample extends Sprite
    {
        private var secureSocket:SecureSocket = new SecureSocket();
        
        public function SecureSocketExample()
        {
            secureSocket.addEventListener( Event.CONNECT, onConnect )
            secureSocket.addEventListener( IOErrorEvent.IO_ERROR, onError );
            
            try
            {
                secureSocket.connect( "208.77.188.166", 443 );
            }
            catch ( error:Error )
            {
                trace ( error.toString() );
            }
        }
        
        private function onConnect( event:Event ):void
        {
            trace("Connected.");
        }
        
        private function onError( error:IOErrorEvent ):void
        {
            trace( error.text + ", " + secureSocket.serverCertificateStatus );
        }
    }
}




[ X ]英語で表示される理由
ActionScript 3.0 リファレンスガイドのコンテンツが英語で表示されます。

ActionScript 3.0 リファレンスガイドのすべての部分がすべての言語に翻訳されているわけではありません。言語エレメントが翻訳されていない場合、そのエレメントは英語で表示されます。例えば、ga.controls.HelpBox クラスはどの言語にも訳されていません。このため、リファレンスガイドの日本語バージョンでは、ga.controls.HelpBox クラスは英語で表示されます。