Пакет | 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():Boolean
serverCertificate | свойство |
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():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.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