Paquete | flash.net |
Clase | public class SecureSocket |
Herencia | SecureSocket Socket EventDispatcher Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Compatibilidad con perfil de AIR: esta característica se admite en todos los sistemas operativos de escritorio, pero no en todos los dispositivos de AIR para TV. En dispositivos móviles, se admite en Android y también se admite en iOS a partir de AIR 20. Puede comprobar la compatibilidad en tiempo de ejecución mediante la propiedad SecureSocket.isSupported
. Consulte Compatibilidad con perfil de AIR para obtener información sobre la compatibilidad de la API con varios perfiles.
Los protocolos SSL/TLS proporcionan un mecanismo para controlar los dos aspectos de una conexión de socket segura:
- Cifrado de comunicación de datos a través del socket
- Autenticación de la identidad del host mediante su certificado
Los protocolos de cifrado admitidos son SSL 3.1 o superior y TLS 1.0 o superior. (TLS es el sucesor del protocolo para SSL. TLS 1.0 es igual a SSL 3.1, TLS 1.1 equivale a SSL 3.2, etc.) No se admite SSL 3.0 ni versiones anteriores.
La validación del certificado del servidor se realiza utilizando el almacén de confianza y el soporte de validación de certificados de la plataforma cliente. Además, puede añadir sus propios certificados mediante programación con el método addBinaryChainBuildingCertificate()
. Esta API no es compatible con iOS actualmente. Al usar esta API en iOS se emitiría una excepción "ArgumentError: Error #2004"
La clase SecureSocket sólo se conecta a servidores con información válida y con certificados de confianza. No puede elegir conectarse a un servidor si existe algún problema con el certificado. Por ejemplo, no hay manera de conectarse a un servidor con un certificado caducado. Lo mismo ocurre para un certificado que no esté encadenado a un certificado de ancla de confianza. La conexión no se realizará, aunque el certificado sea válido para otros fines.
La clase SecureSocket resulta útil para llevar a cabo comunicación cifrada en un servidor de confianza. En otros aspectos, un objeto SecureSocket se comporta como un objeto Socket normal.
Para utilizar la clase SecureSocket, cree un objeto SecureSocket (new SecureSocket()
). A continuación, configure los detectores y, después, ejecute SecureSocket.connect(host, port)
. Al conectarse correctamente al servidor, el socket distribuye un evento connect
. Una conexión correcta es aquella en la que los protocolos de seguridad del servidor se admiten y su certificado es válido y de confianza. Si el certificado no se puede validar, el socket distribuye un evento IOError
.
Importante: no todos los sistemas operativos admiten el protocolo de estado de certificado en línea (OCSP). Los usuarios también pueden desactivar la comprobación OCSP en cada equipos individual. Si no se admite OCSP o está desactivado y un certificado no contiene la información necesaria para comprobar la revocación utilizando una lista de revocación de certificados (LRC), entonces la revocación del certificado no está activada. El certificado se acepta si es válido. Esto podría permitir que un servidor revoque un certificado.
Elementos de API relacionados
Propiedad | Definido por | ||
---|---|---|---|
bytesAvailable : uint [solo lectura]
El número de bytes de datos disponibles para su lectura en el búfer de entrada. | Socket | ||
bytesPending : uint [solo lectura]
Indica el número de bytes restantes en el búfer de escritura. | Socket | ||
connected : Boolean [solo lectura]
Indica si este objeto Socket está conectado actualmente. | Socket | ||
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
endian : String
Indica el orden de bytes de los datos. | Socket | ||
isSupported : Boolean [estática] [solo lectura]
Indica si el sistema actual admite sockets seguros. | SecureSocket | ||
localAddress : String [solo lectura]
La dirección IP a la que este socket está vinculado en el equipo local. | Socket | ||
localPort : int [solo lectura]
El puerto al que este socket está vinculado en el equipo local. | Socket | ||
objectEncoding : uint
Controla la versión del AMF utilizado al escribir o leer un objeto. | Socket | ||
remoteAddress : String [solo lectura]
La dirección IP del equipo remoto a la que este socket está conectado. | Socket | ||
remotePort : int [solo lectura]
El puerto del equipo remoto al que este socket está conectado. | Socket | ||
serverCertificate : X509Certificate [solo lectura]
Aloja el certificado X.509 obtenido desde el servidor tras una conexión de seguridad SSL/TLS. | SecureSocket | ||
serverCertificateStatus : String [solo lectura]
Devuelve el estado del certificado del servidor. | SecureSocket | ||
timeout : uint
Indica el número de milisegundos para esperar una conexión. | Socket |
Método | Definido por | ||
---|---|---|---|
Crea un nuevo objeto SecureSocket. | SecureSocket | ||
Añade un certificado X. 509 a la cadena de certificación que su sistema utiliza para validar el certificado del servidor. | SecureSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. | EventDispatcher | ||
Cierra el socket. | Socket | ||
[override]
Realiza la conexión del socket con el host y el puerto especificados con SSL o TLS. | SecureSocket | ||
Distribuye un evento en el flujo del evento. | EventDispatcher | ||
Alinea los datos acumulados en el búfer de salida del socket. | Socket | ||
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. | EventDispatcher | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Lee un valor booleano del socket. | Socket | ||
Lee un byte con signo del socket. | Socket | ||
Lee el número de bytes de datos especificado por el parámetro length desde el socket. | Socket | ||
Lee un número de coma flotante con precisión doble IEEE 754 del socket. | Socket | ||
Lee un número de coma flotante con precisión simple IEEE 754 del socket. | Socket | ||
Lee un entero de 32 bits con signo del socket. | Socket | ||
Lee una cadena multibyte desde el flujo de bytes mediante el juego de caracteres especificado. | Socket | ||
readObject():*
Lee un objeto del socket, codificado en formato serializado AMF. | Socket | ||
Lee un entero de 16 bits con signo del socket. | Socket | ||
Lee un byte sin signo del socket. | Socket | ||
Lee un entero de 32 bits sin signo del socket. | Socket | ||
Lee un entero de 16 bits sin signo del socket. | Socket | ||
Lee una cadena UTF-8 del socket. | Socket | ||
Lee el número de bytes de datos UTF-8 especificado por el parámetro length desde el socket y devuelve una cadena. | Socket | ||
Elimina un detector del objeto EventDispatcher. | EventDispatcher | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object | ||
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. | EventDispatcher | ||
Escribe un valor booleano en el socket. | Socket | ||
Escribe un byte en el socket. | Socket | ||
Escribe una secuencia de bytes desde el conjunto de bytes especificado. | Socket | ||
Escribe un número de coma flotante con precisión doble IEEE 754 en el socket. | Socket | ||
Escribe un número de coma flotante con precisión simple IEEE 754 en el socket. | Socket | ||
Escribe un entero de 32 bits con signo en el socket. | Socket | ||
Escribe una cadena multibyte desde la transmisión de bytes mediante el juego de caracteres especificado. | Socket | ||
Escribe un objeto en el socket en formato serializado AMF. | Socket | ||
Escribe un entero de 16 bits en el socket. | Socket | ||
Escribe un entero de 32 bits sin signo en el socket. | Socket | ||
Escribe los datos siguientes en el socket: un entero de 16 bits sin signo, que indica la longitud de la cadena UTF-8 especificada en bytes, seguido de la propia cadena. | Socket | ||
Escribe una cadena UTF-8 en el socket. | Socket |
Evento | Resumen | Definido por | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
Se distribuye cuando el servidor cierra la conexión de socket. | SecureSocket | |||
Se distribuye cuando se establece una conexión de red. | SecureSocket | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | EventDispatcher | |||
Se distribuye cuando se produce un error de entrada o salida que provoca que una operación de envío o recepción se realice incorrectamente. | SecureSocket | |||
Se distribuye cuando un socket mueve datos de su búfer de escritura a la capa de transporte de redes | Socket | |||
Se distribuye cuando una llamada a SecureSocket.connect() falla debido a una restricción de seguridad. | SecureSocket | |||
Se distribuye cuando el socket ha recibido datos. | SecureSocket |
isSupported | propiedad |
isSupported:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Indica si el sistema actual admite sockets seguros.
Los sockets segundos no se admiten en todas las plataformas. Compruebe esta propiedad antes de intentar crear una instancia de SecureSocket.
Implementación
public static function get isSupported():Boolean
serverCertificate | propiedad |
serverCertificate:X509Certificate
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3 |
Aloja el certificado X.509 obtenido desde el servidor tras una conexión de seguridad SSL/TLS. Si no se ha establecido una conexión segura, esta propiedad se establece en null
. No es compatible con iOS y, por lo tanto se establece como null
en caso de iOS.
Para obtener más información sobre certificados X.509, consulte RFC2459.
Implementación
public function get serverCertificate():X509Certificate
serverCertificateStatus | propiedad |
serverCertificateStatus:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Devuelve el estado del certificado del servidor.
El estado es CertificateStatus.UNKNOWN
hasta que el socket intenta conectar con un servidor. Tras la validación, el estado será una de las cadenas enumeradas por la clase CertificateStatus. La conexión se produce únicamente cuando el certificado es válido y de confianza. Así, después de un evento connect
, el valor de serverCertificateStatus
es siempre trusted
.
Nota: una vez validado o rechazado el certificado, el valor de estado no se actualiza hasta que la siguiente llamada al método connect()
. Al llamar a close()
no se restaura el valor del estado a "unkown".
Implementación
public function get serverCertificateStatus():String
Elementos de API relacionados
SecureSocket | () | Información sobre |
public function SecureSocket()
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Crea un nuevo objeto SecureSocket.
Compruebe SecureSocket.isSupported
antes de intentar crear una instancia de SecureSocket. Si no se admiten sockets SSL 3.0 o TLS 1.0, el motor de ejecución emitirá un error IllegalOperationError.
Emite
IllegalOperationError — Si se utiliza SSL versión 3.0 (y superior) o TLS versión 1.0 (y superior), no se admite.
| |
SecurityError — Los archivos SWF locales que no son de confianza no pueden comunicarse con Internet. Puede solucionar este problema reclasificando el archivo SWF como archivo local con acceso a red o archivo de confianza.
|
addBinaryChainBuildingCertificate | () | método |
public function addBinaryChainBuildingCertificate(certificate:ByteArray, trusted:Boolean):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3 |
Añade un certificado X. 509 a la cadena de certificación que su sistema utiliza para validar el certificado del servidor. El certificado es temporal, y es válido para la duración de la sesión.
La validación del certificado del servidor se basa almacén de confianza del sistema para certificar la creación y validación de cadenas. Utilice este método para añadir mediante programación cadenas de certificación adicionales y anclas de confianza.
En Mac OS, el llavero del sistema es el llavero predeterminado que se utiliza durante el proceso de encuentro SSL/TLS. Cualquier certificado intermedio en ese llavero se incluye al crear la cadena de certificación.
El certificado que añada con esta API debe ser un certificado X. 509 con codificación DER. Si el parámetro trust
es true, el certificado que se añade con esta API se considera ancla de confianza.
Para obtener más información sobre certificados X.509, consulte RFC2459.
Parámetros
certificate:ByteArray — Un objeto ByteArray con un certificado digital X.509 con codificación DER.
| |
trusted:Boolean — Establézcalo en true para designar que el certificado es un ancla de confianza.
|
Emite
ArgumentError — Cuando el certificado no se pueden añadir.
|
connect | () | método |
override public function connect(host:String, port:int):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Realiza la conexión del socket con el host y el puerto especificados con SSL o TLS.
Cuando se llama al método SecureSocket.connect()
, el socket intenta el encuentro SSL/TLS con el servidor. Si la aprobación se realiza correctamente, el socket intenta validar el certificado del servidor. Si el certificado es válido y de confianza, se establece la conexión de socket seguro y el socket distribuye un evento connect
. Si la aprobación falla o el certificado no se puede validar, el socket distribuye un evento IOError
. Puede comprobar el resultado de la validación del certificado mediante la lectura de la propiedad serverCertificateStatus
después de que se haya distribuido el evento IOError
. (Cuando se distribuye un evento connect
, el estado del certificado siempre es trusted
).
Si el socket ya está conectado, primero se cierra la conexión existente.
Parámetros
host:String — Nombre o dirección IP del host al que se realiza la conexión.
| |
port:int — Número de puerto con el que se realiza la conexión.
|
Eventos
connect: — Se distribuye cuando se establece una conexión de red.
| |
ioError: — Se distribuye si se especifica un host y cuando se produce un error de entrada o salida que provoca que la conexión se realice incorrectamente. Esto incluye errores de flujo SSL/TLS errores y errores durante la validación del certificado del servidor del host.
| |
securityError: — Se distribuye si una llamada a Socket.connect() intenta realizar la conexión con un servidor que no sirve archivos de política de socket o a un servidor cuyo archivo de política no concede al host que realiza la llamada el acceso al puerto especificado. Para obtener más información sobre los archivos de política, consulte “Controles de sitio web (archivos de política)” en la Guía del desarrollador de ActionScript 3.0 y el tema del centro de desarrollo de Flash Player: Seguridad.
|
Emite
IOError — Cuando no especifica un host y la conexión falla.
| |
SecurityError — Cuando se especifica un puerto de socket menor que cero o superior a 65535.
|
close | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.CLOSE
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Se distribuye cuando el servidor cierra la conexión de socket.
El evento close
sólo se distribuye si el servidor cierra la conexión; no se distribuye al llamar al método Socket.close()
.
Event.CLOSE
define el valor de la propiedad type
de un objeto de evento close
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto cuya conexión se ha cerrado. |
connect | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.CONNECT
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Se distribuye cuando se establece una conexión de red.
La constanteEvent.CONNECT
define el valor de la propiedad type
de un objeto de evento connect
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto Socket o XMLSocket que ha establecido una conexión de red. |
ioError | Evento |
flash.events.IOErrorEvent
propiedad IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Se distribuye cuando se produce un error de entrada o salida que provoca que una operación de envío o recepción se realice incorrectamente.
Cuando el certificado del servidor no se puede validar, el evento de error distribuido es un error IOError. En este caso, puede comprobar la propiedad serverCertificateStatus
para determinar la causa del problema.
type
de un objeto de evento ioError
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
errorID | Un número de referencia asociado al error concreto (sólo AIR). |
target | El objeto de red en el que se produce el error de entrada/salida. |
text | Texto que se mostrará como mensaje de error. |
securityError | Evento |
flash.events.SecurityErrorEvent
propiedad SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Se distribuye cuando una llamada a SecureSocket.connect()
falla debido a una restricción de seguridad.
Un evento de error de seguridad se distribuye cuando el código ejecutado en Flash Player o en AIR fuera del entorno limitado de seguridad de la aplicación intenta conectarse a un servidor de un dominio distinto o con un puerto inferior al 1024 y el servidor no proporciona un archivo de política que permite la conexión. Tenga en cuenta que código que se ejecuta en el entorno limitado de la aplicación de AIR puede conectarse a un servidor en cualquier dominio y en puertos inferiores a 1024 sin un archivo de política.
La constanteSecurityErrorEvent.SECURITY_ERROR
define el valor de la propiedad type
de un objeto de evento securityError
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | El objeto de red que informa sobre le error de seguridad. |
text | Texto que se mostrará como mensaje de error. |
Elementos de API relacionados
socketData | Evento |
flash.events.ProgressEvent
propiedad ProgressEvent.type =
flash.events.ProgressEvent.SOCKET_DATA
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 2 |
Se distribuye cuando el socket ha recibido datos. Los eventos de tipo socketData
no utilizan la propiedad ProgressEvent.bytesTotal
.
type
de un objeto de evento socketData
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | El objeto que procesa de forma activa el objeto de evento. |
bytesLoaded | Número de elementos o bytes cargados en el momento en que el detector procesa el evento. |
bytesTotal | 0; los objetos de evento socketData no utilizan esta propiedad. |
target | El socket que informa sobre el progreso. |
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, 02:12 PM Z