パッケージ | flash.net |
クラス | public class SecureSocket |
継承 | SecureSocket Socket EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11, AIR 2 |
AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、一部の AIR for TV デバイスではサポートされません。モバイルデバイスでは、Android でサポートされています。また、AIR 20 以降では、iOS でもサポートされています。SecureSocket.isSupported
プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。
SSL/TLS プロトコルには、セキュアソケット接続の両面を処理するためのメカニズムが用意されています。
- ソケット経由でのデータ通信の暗号化
- ホストの証明書を通じた 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 エレメント
プロパティ | 定義元 | ||
---|---|---|---|
bytesAvailable : uint [読み取り専用]
入力バッファーで読み取ることができるデータのバイト数です。 | Socket | ||
bytesPending : uint [読み取り専用]
書き込みバッファーに残っているデータのバイト数を示します。 | Socket | ||
connected : Boolean [読み取り専用]
この Socket オブジェクトが現在、接続されているかどうかを示します。 | Socket | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
endian : String
データのバイト順を示します。 | Socket | ||
isSupported : Boolean [静的] [読み取り専用]
現在のシステムでセキュアソケットがサポートされているかどうかを示します。 | SecureSocket | ||
localAddress : String [読み取り専用]
ローカルマシン上でこのソケットがバインドされている IP アドレス。 | Socket | ||
localPort : int [読み取り専用]
ローカルマシン上でこのソケットがバインドされているポート。 | Socket | ||
objectEncoding : uint
オブジェクトの書き込みまたは読み取り時に使用される AMF のバージョンを制御します。 | Socket | ||
remoteAddress : String [読み取り専用]
このソケットが接続されているリモートマシンの IP アドレス。 | Socket | ||
remotePort : int [読み取り専用]
このソケットが接続されているリモートマシンのポート。 | Socket | ||
serverCertificate : X509Certificate [読み取り専用]
セキュア SSL/TLS 接続の確立後、サーバーから取得した X.509 証明書を保持します。 | SecureSocket | ||
serverCertificateStatus : String [読み取り専用]
サーバーの証明書のステータスが返されます。 | SecureSocket | ||
timeout : uint
接続までの待ち時間(ミリ秒数)を示します。 | Socket |
メソッド | 定義元 | ||
---|---|---|---|
新しい SecureSocket オブジェクトを作成します。 | SecureSocket | ||
サーバー証明書の検証に使用されるローカル証明書チェーンに X.509 証明書を追加します。 | SecureSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
ソケットを閉じます。 | Socket | ||
[オーバーライド]
ソケットを、SSL または TLS を使用する指定されたホストおよびポートに接続します。 | SecureSocket | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
ソケットの出力バッファーに蓄積されたデータをフラッシュします。 | Socket | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ソケットからブール値を読み取ります。 | Socket | ||
ソケットから符号付きバイトを読み取ります。 | Socket | ||
ソケットから、length パラメーターで指定したデータバイト数を読み取ります。 | Socket | ||
ソケットから IEEE 754 倍精度浮動小数点数を読み取ります。 | Socket | ||
ソケットから IEEE 754 単精度浮動小数点数を読み取ります。 | Socket | ||
ソケットから符号付き 32 ビット整数を読み取ります。 | Socket | ||
指定した文字セットを使用して、バイトストリームからマルチバイトストリングを読み取ります。 | Socket | ||
readObject():*
ソケットから AMF 直列化形式でエンコードされたオブジェクトを読み取ります。 | Socket | ||
ソケットから符号付き 16 ビット整数を読み取ります。 | Socket | ||
ソケットから符号なしバイトを読み取ります。 | Socket | ||
ソケットから符号なし 32 ビット整数を読み取ります。 | Socket | ||
ソケットから符号なし 16 ビット整数を読み取ります。 | Socket | ||
ソケットから UTF-8 ストリングを読み取ります。 | Socket | ||
ソケットから length パラメーターで指定した UTF-8 バイト数を読み取り、ストリングを返します。 | Socket | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher | ||
ソケットにブール値を書き込みます。 | Socket | ||
ソケットに 1 バイトを書き込みます。 | Socket | ||
指定したバイト配列のバイトのシーケンスを書き込みます。 | Socket | ||
ソケットに IEEE 754 倍精度浮動小数点数を書き込みます。 | Socket | ||
ソケットに IEEE 754 単精度浮動小数点数を書き込みます。 | Socket | ||
ソケットに 32 ビット符号付き整数を書き込みます。 | Socket | ||
指定した文字セットを使用して、バイトストリームからマルチバイトストリングを書き込みます。 | Socket | ||
ソケットに AMF 直列化形式でオブジェクトを書き込みます。 | Socket | ||
ソケットに 16 ビット整数を書き込みます。 | Socket | ||
ソケットに 32 ビット符号なし整数を書き込みます。 | Socket | ||
指定された UTF-8 ストリングの長さ(バイト単位)を示す 16 ビット符号なし整数をソケットに書き込み、その後にストリング自体を書き込みます。 | Socket | ||
ソケットに UTF-8 ストリングを書き込みます。 | Socket |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
サーバーによりソケット接続が閉じられたときに送出されます。 | SecureSocket | |||
ネットワーク接続が確立されたときに送出されます。 | SecureSocket | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
入出力エラーが発生して送信または受信操作が失敗したときに送出されます。 | SecureSocket | |||
ソケットによってデータが書き込みバッファーからネットワークトランスポートレイヤーに移動されるときに送出されます | Socket | |||
セキュリティ上の制限のために SecureSocket.connect() の呼び出しが失敗したときに送出されます。 | SecureSocket | |||
ソケットがデータを受信したときに送出されます。 | SecureSocket |
isSupported | プロパティ |
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: — ネットワーク接続が確立されたときに送出されます。
| |
ioError: — ホストが指定されていて、入出力エラーが発生して接続が失敗した場合に送出されます。これには、SSL/TLS ハンドシェイクエラーや、ホストのサーバー証明書の検証の失敗が含まれます。
| |
securityError: — Socket.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
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
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
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
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
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
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
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
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
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | Event をアクティブに処理しているオブジェクトです。 |
bytesLoaded | リスナーがイベントを処理しているときに読み込まれたアイテム数またはバイト数です。 |
bytesTotal | 0。このプロパティは、socketData イベントオブジェクトによって使用されません。 |
target | 進行状況をレポートするソケットです。 |
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 ); } } }
Tue Jun 12 2018, 10:34 AM Z