| Пакет | flash.net |
| Класс | public class SecureSocket |
| Наследование | SecureSocket Socket EventDispatcher Object |
| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 11, AIR 2 |
Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не поддерживается на всех устройствах AIR for TV. Поддерживается на мобильных устройствах Android и iOS начиная с AIR 20. Используйте свойство SecureSocket.isSupported, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».
Протоколы SSL/TLS обеспечивают механизм обработки обоих аспектов безопасного подключения к сокетам:
- Шифрование передачи данных через сокет.
- Установление подлинности идентификационных данных хоста через его сертификат.
Поддерживаемыми протоколами шифрования являются 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. При использовании этого API в ОС iOS выдается исключение: «ArgumentError: ошибка № 2004»
Класс SecureSocket устанавливает подключение только с серверами, которые имеют действительные, надежные сертификаты. Если возникают проблемы с сертификатом, подключиться к серверу никак не удастся. Например, нельзя подключиться к серверу с просроченным сертификатом. То же самое верно для сертификата, который не связан с надежным сертификатом привязки. Соединение не будет установлено, даже если сертификат был бы действителен при прочих условиях.
Класс SecureSocket применяется для зашифрованного обмена данными с надежным сервером. В других отношениях объект SecureSocket ведет себя, как обычный объект Socket.
Чтобы использовать класс SecureSocket, создайте объект SecureSocket (new SecureSocket()). Затем настройте прослушиватели и выполните SecureSocket.connect(host, port). После успешного подключения к серверу сокет отправляет событие connect. Успешное подключение — это подключение, при котором протоколы безопасности сервера поддерживаются и его сертификат является действительным и надежным. Если сертификат недействительный, объект Socket отправляет событие 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 [только для чтения]
Хранит сертификат X.509, полученный с сервера после установки безопасного соединения SSL/TLS. | 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 | |
![]() |
Считывает из сокета число байт данных UTF-8, заданное параметром length и возвращает строку. | Socket | |
![]() |
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | |
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
![]() |
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | |
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object | |
![]() |
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher | |
![]() |
Записывает логическое значение в сокет. | Socket | |
![]() |
Записывает байт в сокет. | Socket | |
![]() |
Записывает последовательность байт из заданного массива байт. | Socket | |
![]() |
Записывает в сокет число IEEE 754 двойной точности с плавающей запятой. | Socket | |
![]() |
Записывает в сокет число IEEE 754 одинарной точности с плавающей запятой. | Socket | |
![]() |
Записывает в сокет 32-разрядное целое число со знаком. | Socket | |
![]() |
Записывает многобайтовую строку из потока байт с использованием заданного набора знаков. | Socket | |
![]() |
Записывает объект в сокет в сериализованном формате AMF. | Socket | |
![]() |
Записывает в сокет 16-разрядное целое число. | Socket | |
![]() |
Записывает в сокет 32-разрядное целое число без знака. | Socket | |
![]() |
Записывает следующие данные в сокет: 16-разрядное целое число без знака, указывающее на длину заданной строки UTF-8 в байтах, а затем саму строку. | Socket | |
![]() |
Записывает строку UTF-8 в сокет. | Socket | |
| Событие | Сводка | Определено | ||
|---|---|---|---|---|
![]() | [многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | ||
| Отправляется, когда сервер закрывает подключение к сокету. | SecureSocket | |||
| Отправляется после установления сетевого подключения. | SecureSocket | |||
![]() | [многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher | ||
| Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою операции отправки или получения. | SecureSocket | |||
![]() | Передается при перемещении данных сокетом из буфера записи на уровень сетевого транспорта | Socket | ||
| Передается при сбое вызова SecureSocket.connect() вследствие ограничений безопасности. | SecureSocket | |||
| Отправляется, когда сокет получает данные. | SecureSocket | |||
isSupported | свойство |
isSupported:Boolean [только для чтения] | Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 11, AIR 2 |
Указывает, поддерживаются ли защищенные сокеты в текущей системе.
Защищенные сокеты поддерживаются не на всех платформах. Проверьте это свойство, прежде чем создавать экземпляр SecureSocket.
Реализация
public static function get isSupported():BooleanserverCertificate | свойство |
serverCertificate:X509Certificate [только для чтения] | Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 11, AIR 3 |
Хранит сертификат X.509, полученный с сервера после установки безопасного соединения SSL/TLS. Если безопасное соединение не установлено, для этого свойства устанавливается значение null. В настоящий момент это не поддерживается в ОС iOS, в результате чего для iOS задается значение null.
Дополнительные сведения о сертификатах X.509 см. на странице RFC2459.
Реализация
public function get serverCertificate():X509CertificateserverCertificateStatus | свойство |
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.isSupported, прежде чем создавать экземпляр SecureSocket. Если сокеты SSL 3.0 или TLS 1.0 не поддерживаются, среда выполнения выдает ошибку IllegalOperationError.
Выдает
IllegalOperationError — Когда SSL 3.0 (и более поздних версий) или TLS 1.0 (и более поздних версий) не поддерживаются.
| |
SecurityError — Локальные ненадежные SWF-файлы изолированы от Интернета. Данную проблему можно обойти, если переклассифицировать этот SWF-файл как локальный с сетевым подключением или доверенный.
|
addBinaryChainBuildingCertificate | () | метод |
public function addBinaryChainBuildingCertificate(certificate:ByteArray, trusted:Boolean):void| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 11, AIR 3 |
Добавляет сертификат X.509 в локальную цепочку сертификатов, используемую в системе для проверки сертификата сервера. Сертификат является временным и действует только в течение сеанса.
Проверка сертификатов сервера основана на использовании надежного системного хранилища для построения и проверки цепочки сертификатов. Используйте этот метод для добавления дополнительных цепочек сертификатов и надежных привязок программными средствами.
В ОС Mac OS системная цепочка ключей является цепочкой ключей по умолчанию, используемой в процессе подтверждения SSL/TLS. Любые промежуточные сертификаты в этой цепочке ключей включаются при создании цепочки сертификатов.
Сертификат, добавляемый с использованием данного API-интерфейса, должен быть зашифрованным в формате DER сертификатом X.509. Если параметр trusted имеет значение true, сертификат, добавляемый с использованием этого API-интерфейса, считается надежной привязкой.
Дополнительные сведения о сертификатах X.509 см. на странице RFC2459.
Параметры
certificate:ByteArray — Объект ByteArray, содержащий зашифрованный в формате DER цифровой сертификат X.509.
| |
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. Если подтверждение связи завершается ошибкой или сертификат недействителен, объект Socket отправляет событие IOError. Можно проверить результат проверки сертификата, прочитав свойство serverCertificateStatus после отправки события IOError. (Когда отправляется событие connect, сертификат всегда имеет состояние trusted (доверенный).)
Если сокет уже был подключен, то сначала закрывается именно существующее подключение.
Параметры
host:String — Имя или IP-адрес узла, к которому нужно подключиться.
| |
port:int — Номер порта для подключения.
|
События
connect: — Отправляется после установления сетевого подключения.
| |
ioError: — Отправляется, если узел указан, но возникает ошибка ввода-вывода, вызывающая сбой подключения. Это могут быть ошибки квитирования связи SSL/TLS и ошибки при проверке сертификата сервера хоста.
| |
securityError: — Отправляется, если вызов Socket.connect() пытается установить подключение к серверу, на котором нет файла политик для сокетов, либо к серверу, на котором файл политик для сокетов не предоставляет вызывающему узлу доступ к указанному порту. Дополнительные сведения о файлах политик см. в главе «Элементы управления веб-сайтом (файлы политики)» в Руководстве разработчика по ActionScript 3.0, а также в разделе центра разработчиков Flash Player Developer Center: Безопасность.
|
Выдает
IOError — Когда хост не указан и происходит сбой подключения.
| |
SecurityError — Когда указан порт сокета с номером меньше нуля или больше 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 | Объект, активно обрабатывающий событие. |
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, 11:34 AM Z
Скрыть унаследованные общедоступные свойства
Показать унаследованные общедоступные свойства