Pacchetto | flash.net |
Classe | public class SecureSocket |
Ereditarietà | SecureSocket Socket EventDispatcher Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Supporto profili AIR: questa funzionalità è supportata in tutti i sistemi operativi desktop ma non in AIR per i dispositivi TV. Su dispositivi mobili, è supportato su Android e su iOS a partire da AIR 20. È possibile verificare se la funzionalità è supportata in fase runtime utilizzando la proprietà SecureSocket.isSupported
. Per ulteriori informazioni sul supporto delle API tra più profili, vedete Supporto dei profili AIR.
I protocolli SSL/TLS forniscono un meccanismo per gestire entrambi gli aspetti di una connessione socket sicura:
- Cifratura della comunicazione dati attraverso il socket
- Autenticazione dell'identità dell'host tramite il proprio certificato
I protocolli di cifratura supportati sono SSL 3.1 e successivi e TLS 1.0 e successivi. (TLS è il successore di SSL. TLS 1.0 equivale a SSL 3.1, TLS 1.1 a SSL 3.2 e così via.) La versione 3.0 e le versioni precedenti di SSL non sono supportate.
La convalida del certificato del server viene eseguita utilizzando l’archivio delle fonti attendibili e il supporto per la convalida del certificato della piattaforma client. Inoltre, potete aggiungere i vostri certificati personali in maniera programmatica con il metodo addBinaryChainBuildingCertificate()
. Questa API non è attualmente supportata su iOS. L’utilizzo di questa API su iOS potrebbe provocare un’eccezione - “ArgumentError: Error #2004”
La classe SecureSocket consente la connessione solo ai server con certificati attendibili validi. Non potete connettervi a un server se esiste un problema con il relativo certificato. Ad esempio, non è possibile connettersi a un server il cui certificato è scaduto. Lo stesso vale nel caso in cui un certificato non sia associato a un certificato di ancoraggio attendibile. La connessione non viene effettuata, anche se il certificato è altrimenti valido.
La classe SecureSocket è utile per stabilire la comunicazione crittografata a un server attendibile. Per altri aspetti, il comportamento di un oggetto SecureSocket è analogo a quello di un normale oggetto Socket.
Per utilizzare la classe SecureSocket, create un oggetto SecureSocket (new SecureSocket()
). Quindi, impostate i vostri listener, poi eseguite SecureSocket.connect(host, port)
. Una volta stabilita con successo la connessione con il server, il socket invia un evento connect
. Una connessione è corretta quando i protocolli di sicurezza del server sono supportati e il suo certificato è valido e attendibile. Se non è possibile convalidare il certificato, il Socket invia un evento IOError
.
Importante: il protocollo OCSP (Online Certificate Status Protocol) non è supportato da tutti i sistemi operativi. Gli utenti possono anche disattivare la verifica OCSP sui singoli computer. Se OCSP non è supportato oppure è disabilitato e un certificato non contiene le informazioni necessarie per verificare la revoca utilizzando un elenco CRL (Certificate Revocation List), la revoca del certificato non viene verificata. Il certificato viene accettato se non risulta non valido per altri motivi. Questo scenario consentire a un server di utilizzare un certificato revocato.
Altri esempi
Elementi API correlati
Proprietà | Definito da | ||
---|---|---|---|
bytesAvailable : uint [sola lettura]
Il numero di byte di dati disponibili per la lettura nel buffer di input. | Socket | ||
bytesPending : uint [sola lettura]
Indica il numero di byte rimanenti nel buffer di scrittura. | Socket | ||
connected : Boolean [sola lettura]
Indica se l'oggetto Socket è attualmente connesso. | Socket | ||
constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | ||
endian : String
Indica l'ordine di byte per i dati. | Socket | ||
isSupported : Boolean [statico] [sola lettura]
Indica se i socket protetti sono supportati nel sistema corrente. | SecureSocket | ||
localAddress : String [sola lettura]
L'indirizzo IP a cui è associato questo socket sul computer locale. | Socket | ||
localPort : int [sola lettura]
La porta a cui è associato questo socket sul computer locale. | Socket | ||
objectEncoding : uint
Controlla la versione di Action Message Format (AMF) utilizzata per scrivere o leggere un oggetto. | Socket | ||
remoteAddress : String [sola lettura]
L'indirizzo IP del computer remoto a cui è connesso questo socket. | Socket | ||
remotePort : int [sola lettura]
La porta sul computer remoto a cui è connesso questo socket. | Socket | ||
serverCertificate : X509Certificate [sola lettura]
Contiene il certificato X.509 ottenuto dal server dopo che è stata stabilita una connessione SSL/TLS sicura. | SecureSocket | ||
serverCertificateStatus : String [sola lettura]
Restituisce lo stato del certificato del server. | SecureSocket | ||
timeout : uint
Indica il numero di millisecondi di attesa di una connessione. | Socket |
Metodo | Definito da | ||
---|---|---|---|
Crea un nuovo oggetto SecureSocket. | SecureSocket | ||
Aggiunge un certificato X.509 alla catena di certificati locale utilizzata dal sistema per la convalida del certificato server. | SecureSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un oggetto listener di eventi con un oggetto EventDispatcher, in modo che il listener riceva la notifica di un evento. | EventDispatcher | ||
Chiude il socket. | Socket | ||
[override]
Connette il socket all'host e alla porta specificati utilizzando SSL o TLS. | SecureSocket | ||
Invia un evento nel flusso di eventi. | EventDispatcher | ||
Svuota tutti i dati eventualmente accumulati nel buffer di output del socket. | Socket | ||
Verifica se per l'oggetto EventDispatcher sono presenti listener registrati per un tipo specifico di evento. | EventDispatcher | ||
Indica se per un oggetto è definita una proprietà specifica. | Object | ||
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Legge un valore booleano dal socket. | Socket | ||
Legge un byte con segno dal socket. | Socket | ||
Legge il numero di byte di dati, specificato dal parametro lunghezza, dal socket. | Socket | ||
Legge un numero a virgola mobile e a precisione doppia IEEE 754 dal socket. | Socket | ||
Legge un numero a virgola mobile e a precisione singola IEEE 754 dal socket. | Socket | ||
Legge un numero intero a 32 bit con segno dal socket. | Socket | ||
Legge una stringa multibyte dal flusso di byte utilizzando il set di caratteri specificato. | Socket | ||
readObject():*
Legge un oggetto dal socket, codificato in formato serializzato AMF. | Socket | ||
Legge un numero intero a 16 bit con segno dal socket. | Socket | ||
Legge un byte senza segno dal socket. | Socket | ||
Legge un numero intero a 32 bit senza segno dal socket. | Socket | ||
Legge un numero intero a 16 bit senza segno dal socket. | Socket | ||
Legge una stringa UTF-8 dal socket. | Socket | ||
Legge il numero di byte di dati UTF-8, specificato dal parametro length, dal socket e restituisce una stringa. | Socket | ||
Rimuove un listener dall'oggetto EventDispatcher. | EventDispatcher | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object | ||
Verifica se un listener di eventi è registrato con questo oggetto EventDispatcher o qualsiasi suo antenato per il tipo di evento specificato. | EventDispatcher | ||
Scrive un valore booleano nel socket. | Socket | ||
Scrive un byte nel socket. | Socket | ||
Scrive una sequenza di byte dall'array dei byte specificato. | Socket | ||
Scrive un numero a virgola mobile e a precisione doppia IEEE 754 nel socket. | Socket | ||
Scrive un numero a virgola mobile e a precisione singola IEEE 754 nel socket. | Socket | ||
Scrive un numero intero con segno a 32 bit nel socket. | Socket | ||
Scrive una stringa multibyte dal flusso di byte utilizzando il set di caratteri specificato. | Socket | ||
Scrive un oggetto nel socket in formato serializzato AMF. | Socket | ||
Scrive un numero intero a 16 bit nel socket. | Socket | ||
Scrive un numero intero senza segno a 32 bit nel socket. | Socket | ||
Scrive i dati seguenti nel socket: un numero intero senza segno a 16 bit, che indica la lunghezza della stringa UTF-8 specificata espressa in byte, seguita dalla stringa stessa. | Socket | ||
Scrive una stringa UTF-8 nel socket. | Socket |
Evento | Riepilogo | Definito da | ||
---|---|---|---|---|
[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR ottiene lo stato di attivazione del sistema operativo ed entra nello stato attivo. | EventDispatcher | |||
Inviato quando il server chiude la connessione socket. | SecureSocket | |||
Inviato quando è stata stabilita una connessione di rete. | SecureSocket | |||
[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR perde l'attivazione del sistema operativo e sta entrando nello stato inattivo. | EventDispatcher | |||
Inviato quando si verifica un errore di input o output che impedisce un'operazione di invio o ricezione. | SecureSocket | |||
Inviato quando un socket sposta dei dati dal suo buffer di scrittura al livello di trasporto della connettività | Socket | |||
Inviato quando una chiamata di SecureSocket.connect() non riesce a causa di una restrizione della sicurezza. | SecureSocket | |||
Inviato se un socket ha ricevuto i dati. | SecureSocket |
isSupported | proprietà |
isSupported:Boolean
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Indica se i socket protetti sono supportati nel sistema corrente.
I socket protetti non sono supportati su tutte le piattaforme. Verificate questa proprietà prima di tentare di creare un'istanza SecureSocket.
Implementazione
public static function get isSupported():Boolean
serverCertificate | proprietà |
serverCertificate:X509Certificate
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 3 |
Contiene il certificato X.509 ottenuto dal server dopo che è stata stabilita una connessione SSL/TLS sicura. Se non è stata stabilita una connessione sicura, questa proprietà viene impostata su null
. Attualmente non è supportato su iOS, quindi è impostato su null
(solo per iOS).
Per ulteriori informazioni sui certificati X.509, vedete RFC2459.
Implementazione
public function get serverCertificate():X509Certificate
serverCertificateStatus | proprietà |
serverCertificateStatus:String
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Restituisce lo stato del certificato del server.
Lo stato è CertificateStatus.UNKNOWN
finché il socket tenta di connettersi a un server. Dopo la convalida, lo stato corrisponde a una delle stringhe enumerate dalla classe CertificateStatus. La connessione riesce solo quando il certificato è valido e attendibile. (Quindi, dopo un evento connect
, il valore di serverCertificateStatus
è sempre trusted
.)
Nota: una volta che il certificato è stato convalidato o rifiutato, il valore di stato non viene aggiornato fino alla prossima chiamata al metodo connect()
. Una chiamata a close()
non reimposta il valore di stato su "unknown".
Implementazione
public function get serverCertificateStatus():String
Elementi API correlati
SecureSocket | () | Funzione di costruzione |
public function SecureSocket()
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Crea un nuovo oggetto SecureSocket.
Verificate SecureSocket.isSupported
prima di tentare di creare un'istanza SecureSocket. Se il socket SSL 3.0 o TLS 1.0 non è supportato, il runtime genera un errore di tipo IllegalOperationError.
Genera
IllegalOperationError — Quando SSL versione 3.0 (e superiori) o TLS versione 1.0 (e superiori) non sono supportati.
| |
SecurityError — I file SWF non attendibili locali potrebbero non essere in grado di comunicare con Internet. Questo problema può essere risolto riclassificando il file SWF come file locale con utilizzo in rete o come attendibile.
|
addBinaryChainBuildingCertificate | () | metodo |
public function addBinaryChainBuildingCertificate(certificate:ByteArray, trusted:Boolean):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 3 |
Aggiunge un certificato X.509 alla catena di certificati locale utilizzata dal sistema per la convalida del certificato server. Il certificato è temporaneo e ha validità per tutta la durata della sessione.
La convalida del certificato server impiega l'archivio dei dati di attendibilità del sistema per la costruzione e la convalida della catena di certificati. Utilizzate questo metodo per aggiungere a livello programmatico catene di certificazione e ancoraggi attendibili.
In Mac OS, il portachiavi di sistema è il portachiavi predefinito utilizzato durante il processo di handshake SSL/TLS. Gli eventuali certificati intermediate all'interno del portachiavi vengono inclusi nella catena di certificati.
Il certificato che aggiungete con questa API deve essere un certificato X.509 con codifica DER. Se il parametro trusted
è true, il certificato che aggiungete con questa API viene considerato un ancoraggio attendibile.
Per ulteriori informazioni sui certificati X.509, vedete RFC2459.
Parametri
certificate:ByteArray — Un oggetto ByteArray che contiene un certificato digitale X.509 con codifica DER.
| |
trusted:Boolean — Impostate su true per designare questo certificato come ancoraggio di attendibilità.
|
Genera
ArgumentError — Quando il certificato non può essere aggiunto.
|
connect | () | metodo |
override public function connect(host:String, port:int):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Connette il socket all'host e alla porta specificati utilizzando SSL o TLS.
Quando chiamate il metodo SecureSocket.connect()
, il socket tenta di effettuare l'handshake SSL/TLS con il server. Se l'handshake ha esito positivo, il socket tenta di convalidare il certificato server. Se il certificato è valido e attendibile, la connessione socket sicura viene stabilita e il socket invia un evento connect
. Se l'handshake fallisce o non è possibile convalidare il certificato, il socket invia un evento IOError
. Potete verificare il risultato della convalida del certificato leggendo la proprietà serverCertificateStatus
dopo l'invio dell'evento IOError
. (Quando viene inviato un evento connect
, lo stato del certificato è sempre trusted
.)
Se il socket era già connesso, prima viene chiusa la connessione esistente.
Parametri
host:String — Il nome o l'indirizzo IP dell'host a cui connettersi.
| |
port:int — Il numero di porta a cui connettersi.
|
Eventi
connect: — Inviato quando è stata stabilita una connessione di rete.
| |
ioError: — Inviato se è specificato un host e si verifica un errore di input/output che impedisce la connessione. Sono inclusi gli errori di handshake SSL/TLS e l'impossibilità di convalidare correttamente il certificato del server host.
| |
securityError: — Inviato se una chiamata a Socket.connect() tenta di connettersi a un server che non fornisce un file dei criteri per i socket, oppure a un server il cui file dei criteri consente all'host chiamante di accedere alla porta specificata. Per ulteriori informazioni sui file di criteri, vedete il capitolo "Controlli del sito Web (file di criteri)" nella nella Guida per gli sviluppatori di ActionScript 3.0 e l'argomento nel Centro per sviluppatori Flash Player: Security (Sicurezza).
|
Genera
IOError — Quando non specificate l'host e la connessione fallisce.
| |
SecurityError — Quando specificate una porta socket inferiore a o superiore a 65535.
|
close | Evento |
flash.events.Event
proprietà Event.type =
flash.events.Event.CLOSE
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Inviato quando il server chiude la connessione socket.
L'evento close
viene inviato solo quando il server chiude la connessione; non viene inviato quando si chiama il metodo Socket.close()
.
Event.CLOSE
definisce il valore della proprietà type
di un oggetto evento close
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto la cui connessione è stata chiusa. |
connect | Evento |
flash.events.Event
proprietà Event.type =
flash.events.Event.CONNECT
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Inviato quando è stata stabilita una connessione di rete.
La costanteEvent.CONNECT
definisce il valore della proprietà type
di un oggetto evento connect
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto Socket o XMLSocket che ha stabilito una connessione di rete. |
ioError | Evento |
flash.events.IOErrorEvent
proprietà IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Inviato quando si verifica un errore di input o output che impedisce un'operazione di invio o ricezione.
Quando non è possibile convalidare un certificato server, l'evento errore inviato è del tipo IOError. In questo caso potete verificare la proprietà serverCertificateStatus
per determinare la causa del problema.
type
di un oggetto evento ioError
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
errorID | Un numero di riferimento associato all'errore specifico (solo AIR). |
target | L'oggetto di rete interessato dall'errore di input/output. |
text | Testo da visualizzare come messaggio di errore. |
securityError | Evento |
flash.events.SecurityErrorEvent
proprietà SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Inviato quando una chiamata di SecureSocket.connect()
non riesce a causa di una restrizione della sicurezza.
Un evento errore di sicurezza viene inviato quando il codice eseguito in Flash Player on in AIR fuori della sandbox di sicurezza dell'applicazione tenta di connettersi a un server in un dominio differente oppure a un numero di porta inferiore a 1024 e il server non fornisce un file di criteri che consenta la connessione. Nota: il codice eseguito nella sandbox dell'applicazione AIR può connettersi a un server di qualsiasi dominio e a numeri di porta inferiori a 1024 senza un file di criteri.
La costanteSecurityErrorEvent.SECURITY_ERROR
definisce il valore della proprietà type
di un oggetto evento securityError
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto di rete che riporta l'errore di sicurezza. |
text | Testo da visualizzare come messaggio di errore. |
Elementi API correlati
socketData | Evento |
flash.events.ProgressEvent
proprietà ProgressEvent.type =
flash.events.ProgressEvent.SOCKET_DATA
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 2 |
Inviato se un socket ha ricevuto i dati. Gli eventi di tipo socketData
non utilizzano la proprietà ProgressEvent.bytesTotal
.
type
di un oggetto evento socketData
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che sta elaborando attivamente l'evento. |
bytesLoaded | Il numero di elementi o di byte caricati nel momento in cui il listener elabora l'evento. |
bytesTotal | 0; questa proprietà non viene utilizzata dagli oggetti evento socketData . |
target | Il socket che segnala l'avanzamento. |
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:44 PM Z