Package | flash.net |
Classe | public class SecureSocket |
Héritage | SecureSocket Socket EventDispatcher Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur tous les systèmes d’exploitation de bureau, mais ne l’est pas sur tous les périphériques AIR pour TV. Sur les périphériques mobiles, ceci est pris en charge sur Android, ainsi que sur iOS à partir de la version 20 d'AIR. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété SecureSocket.isSupported
. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.
Les protocoles SSL/TLS fournissent un mécanisme permettant de gérer les deux aspects d’une connexion de socket sécurisée :
- Chiffrement de la communication de données sur le socket
- Authentification de l’identité de l’hôte par le biais de son certificat
Les protocoles de chiffrement pris en charge sont les suivants : SSL 3.1 et versions ultérieures, et TLS 1.0 et versions ultérieures. (TLS n’est le protocole successeur pour SSL. TLS 1.0 SSL correspond à SSL 3.1, TLS 1.1 SSL correspond à SSL 3.2, et ainsi de suite.) Les versions SSL 3.0 ou inférieures ne sont pas prises en charge.
Le certificat de serveur est validé à l’aide du magasin d’approbations et de la fonction de validation de certificat de la plate-forme client. En outre, vous pouvez ajouter vos propres certificats par programmation avec la méthode addBinaryChainBuildingCertificate()
. Cette API n'est actuellement pas prise en charge sous iOS. Utiliser cette API sous iOS retournerait une exception - « ArgumentError : Erreur #2004 »
La classe SecureSocket se connecte aux serveurs uniquement avec des certificats valides et approuvés. Vous ne pouvez pas vous connecter à un serveur si son certificat pose problème. Par exemple, il n’existe aucun moyen de se connecter à un serveur avec un certificat périmé. Il en va de même pour un certificat qui n’est pas lié à un certificat d’ancrage approuvé. La connexion n’est pas établie même si le certificat est valide.
La classe SecureSocket est utile pour établir la communication chiffrée à un serveur approuvé. A d’autres égards, un objet SecureSocket se comporte comme un objet Socket standard
Pour utiliser la classe SecureSocket, créez un objet SecureSocket (new SecureSocket()
). Configurez ensuite vos écouteurs, puis exécutez SecureSocket.connect(host, port)
. Lorsque la connexion au serveur est établie, le socket distribue un événement connect
. Une connexion correctement établie est une connexion dans laquelle les protocoles de sécurité du serveur sont pris en charge, et dans laquelle le certificat du serveur est valide et approuvé. S’il est impossible de valider le certificat, le socket distribue un événement IOError
.
Important : le protocole OCSP (Online Certificate Status Protocol) n’est pas pris en charge sur tous les systèmes d’exploitation. Les utilisateurs peuvent également désactiver la vérification OCSP sur des ordinateurs individuels. Si le protocole OCSP n’est pas pris en charge ou s’il est désactivé et si un certificat ne contient pas les informations nécessaires permettant de vérifier la révocation à l’aide d’une liste de révocation de certificats, la révocation des certificats n’est pas vérifiée. Le certificat est accepté s’il est valide. Ce scénario pourrait autoriser un serveur à utiliser un certificat révoqué.
Plus d’exemples
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
bytesAvailable : uint [lecture seule]
Nombre d’octets de données disponibles en lecture dans la mémoire tampon d’entrée. | Socket | ||
bytesPending : uint [lecture seule]
Indique le nombre d’octets restants dans la mémoire tampon d’écriture. | Socket | ||
connected : Boolean [lecture seule]
Indique si l’objet Socket est actuellement connecté. | Socket | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
endian : String
Indique l’ordre d’octet des données. | Socket | ||
isSupported : Boolean [statique] [lecture seule]
Indique si les sockets sécurisés sont pris en charge sur le système actuel. | SecureSocket | ||
localAddress : String [lecture seule]
Adresse IP à laquelle ce socket est lié sur la machine locale. | Socket | ||
localPort : int [lecture seule]
Port auquel ce socket est lié sur la machine locale. | Socket | ||
objectEncoding : uint
Contrôle la version du format AMF utilisée lors de l’écriture ou de la lecture d’un objet. | Socket | ||
remoteAddress : String [lecture seule]
Adresse IP de la machine distante à laquelle ce socket est connecté. | Socket | ||
remotePort : int [lecture seule]
Port de la machine distante auquel ce socket est connecté. | Socket | ||
serverCertificate : X509Certificate [lecture seule]
Conserve le certificat X.509 obtenu à partir du serveur après l’établissement d’une connexion SSL/TLS sécurisée. | SecureSocket | ||
serverCertificateStatus : String [lecture seule]
Renvoie l’état du certificat du serveur. | SecureSocket | ||
timeout : uint
Indique le délai d’attente d’une connexion, en millisecondes. | Socket |
Méthode | Défini par | ||
---|---|---|---|
Crée un nouvel objet SecureSocket. | SecureSocket | ||
Ajoute un certificat X.509 à la chaîne de certificat local que votre système utilise pour la validation du certificat de serveur. | SecureSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. | EventDispatcher | ||
Ferme le socket. | Socket | ||
[override]
Connecte le socket à l’hôte et au port spécifiés à l’aide du protocole SSL ou TLS. | SecureSocket | ||
Distribue un événement dans le flux d’événements. | EventDispatcher | ||
Efface les données accumulées dans la mémoire tampon de sortie du socket. | Socket | ||
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement. | EventDispatcher | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Lit une valeur booléenne dans le socket. | Socket | ||
Lit un octet signé dans le socket. | Socket | ||
Lit dans le socket le nombre d’octets de données spécifié par le paramètre length. | Socket | ||
Lit dans le socket un nombre à virgule flottante à deux décimales et conforme à IEEE 754. | Socket | ||
Lit dans le socket un nombre à virgule flottante à une décimale et conforme à IEEE 754. | Socket | ||
Lit un entier de 32 bits signé dans le socket. | Socket | ||
Lit une chaîne multi-octets dans le flux d’octets, en utilisant le jeu de caractères spécifié. | Socket | ||
readObject():*
Lit dans le socket un objet codé au format AMF (Action Message Format) sérialisé. | Socket | ||
Lit un entier de 16 bits signé dans le socket. | Socket | ||
Lit un octet non signé dans le socket. | Socket | ||
Lit un entier de 32 bits non signé dans le socket. | Socket | ||
Lit un entier de 16 bits non signé dans le socket. | Socket | ||
Lit une chaîne UTF-8 dans le socket. | Socket | ||
Lit dans le socket le nombre d’octets de données UTF-8 spécifié par le paramètre length et renvoie une chaîne. | Socket | ||
Supprime un écouteur de l’objet EventDispatcher. | EventDispatcher | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié. | EventDispatcher | ||
Ecrit une valeur booléenne dans le socket. | Socket | ||
Ecrit un octet dans le socket. | Socket | ||
Ecrit une séquence d’octets extraits du tableau d’octets spécifié. | Socket | ||
Ecrit dans le socket un nombre à virgule flottante à deux décimales et conforme à IEEE 754. | Socket | ||
Ecrit dans le socket un nombre à virgule flottante à une décimale conforme à IEEE 754. | Socket | ||
Ecrit un entier signé de 32 bits dans le socket. | Socket | ||
Ecrit une chaîne multi-octets extraite du flux d’octets, en utilisant le jeu de caractères spécifié. | Socket | ||
Ecrit un objet dans le socket au format AMF sérialisé. | Socket | ||
Ecrit un entier 16 bits dans le socket. | Socket | ||
Ecrit un entier non signé de 32 bits dans le socket. | Socket | ||
Ecrit les données suivantes dans le socket : un entier non signé de 16 bits, qui indique, en octets, la longueur de la chaîne UTF-8 spécifiée, suivie de la chaîne elle-même. | Socket | ||
Ecrit une chaîne UTF-8 dans le socket. | Socket |
Evénement | Synthèse | Défini par | ||
---|---|---|---|---|
[Evénement de diffusion] Distribué lorsque l’application Flash Player obtient le focus du système d’exploitation et devient active. | EventDispatcher | |||
Distribué lorsque le serveur ferme la connexion socket. | SecureSocket | |||
Distribué lorsqu’une connexion réseau est établie. | SecureSocket | |||
[Evénement de diffusion] Distribué lorsque l’application Flash Player ou AIR perd le focus du système d’exploitation et devient inactive. | EventDispatcher | |||
Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération d’envoi ou de réception. | SecureSocket | |||
Distribué lorsqu’un socket déplace des données de son tampon d’écriture vers la couche de transport de la mise en réseau | Socket | |||
Distribué lorsqu’un appel à SecureSocket.connect() échoue en raison d’une restriction de sécurité. | SecureSocket | |||
Distribué lorsqu’un socket a reçu des données. | SecureSocket |
isSupported | propriété |
isSupported:Boolean
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Indique si les sockets sécurisés sont pris en charge sur le système actuel.
Les sockets sécurisés ne sont pas pris en charge sur toutes les plates-formes. Vérifiez cette propriété avant toute tentative de création d’une occurrence de SecureSocket.
Implémentation
public static function get isSupported():Boolean
serverCertificate | propriété |
serverCertificate:X509Certificate
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 3 |
Conserve le certificat X.509 obtenu à partir du serveur après l’établissement d’une connexion SSL/TLS sécurisée. Si une connexion sécurisée n’est pas établie, cette propriété est définie sur null
. Ceci n'est actuellement pas pris en charge sous iOS, et donc défini sur null
dans le cas d'iOS.
Pour plus d’informations sur les certificats X.509, voir RFC2459.
Implémentation
public function get serverCertificate():X509Certificate
serverCertificateStatus | propriété |
serverCertificateStatus:String
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Renvoie l’état du certificat du serveur.
L’état est CertificateStatus.UNKNOWN
jusqu’à ce que le socket tente d’établir une connexion à un serveur. Après validation, l’état est l’une des chaînes énumérées par la classe CertificateStatus. La connexion aboutit uniquement lorsque le certificat est validé et approuvé. Ainsi, après un événement connect
, la valeur de serverCertificateStatus
est toujours trusted
.
Remarque : une fois le certificat validé ou rejeté, la valeur d’état n’est pas mise à jour jusqu’au prochain appel de la méthode connect()
. L’appel de la méthode close()
ne rétablit pas l’état sur la valeur « unknown ».
Implémentation
public function get serverCertificateStatus():String
Eléments de l’API associés
SecureSocket | () | Constructeur |
public function SecureSocket()
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Crée un nouvel objet SecureSocket.
Vérifiez SecureSocket.isSupported
avant toute tentative de création d’une occurrence de SecureSocket. Si les sockets SSL 3.0 ou TLS 1.0 ne sont pas pris en charge, le moteur d’exécution renvoie une erreur IllegalOperationError.
Valeur émise
IllegalOperationError — Lorsque SSL version 3.0 (et versions ultérieures) ou TLS version 1.0 (et versions ultérieures) n’est pas pris en charge.
| |
SecurityError — Les fichiers SWF locaux et non approuvés ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé.
|
addBinaryChainBuildingCertificate | () | méthode |
public function addBinaryChainBuildingCertificate(certificate:ByteArray, trusted:Boolean):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 3 |
Ajoute un certificat X.509 à la chaîne de certificat local que votre système utilise pour la validation du certificat de serveur. Le certificat est temporaire et dure pendant toute la durée de la session.
La validation du certificat de serveur dépend du magasin d’approbation de votre système pour créer et valider la chaîne de certificat. Utilisez cette méthode pour ajouter par programmation d’autres chaînes de certification et ancrages approuvés.
Sous Mac OS, le trousseau du système est le trousseau par défaut utilisé au cours du processus de connexion SSL/TLS. Tous les certificats intermédiaires dans ce trousseau sont inclus lors de la construction de la chaîne de certification.
Le certificat que vous ajoutez avec cette API doit être un certificat X.509 codé en DER. Si le paramètre trusted
est défini sur true, le certificat que vous ajoutez avec cette API est considéré comme un ancrage approuvé.
Pour plus d’informations sur les certificats X.509, voir RFC2459.
Paramètres
certificate:ByteArray — Objet ByteArray contenant un certificat numérique X.509 codé en DER.
| |
trusted:Boolean — Défini sur true pour désigner ce certificat comme ancre de confiance.
|
Valeur émise
ArgumentError — Lorsque le certificat ne peut pas être ajouté.
|
connect | () | méthode |
override public function connect(host:String, port:int):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Connecte le socket à l’hôte et au port spécifiés à l’aide du protocole SSL ou TLS.
Lorsque vous appelez la méthode SecureSocket.connect()
, le socket tente une connexion SSL/TLS avec le serveur. Si la connexion est établie, le socket tente de valider le certificat du serveur. Si le certificat est validé et approuvé, la connexion socket sécurisée est établie et le socket distribue un événement connect
. Si la connexion échoue ou s’il est impossible de valider le certificat, le socket distribue un événement IOError
. Vous pouvez vérifier les résultats de validation du certificat en lisant la propriété serverCertificateStatus
après la distribution de l’événement IOError
. (Lorsqu’un événement connect
est distribué, l’état du certificat est toujours approuvé
.)
Si le socket était déjà connecté, la connexion existante est d’abord fermée.
Paramètres
host:String — Nom ou adresse IP de l’hôte auquel la connexion doit être établie.
| |
port:int — Numéro du port auquel établir la connexion.
|
Evénements
connect: — Distribué lorsqu’une connexion réseau est établie.
| |
ioError: — Distribué lorsqu’un hôte est spécifié et qu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion. Il peut s’agir d’erreurs de communication SSL/TLS et de tout échec de validation du certificat de serveur de l’hôte.
| |
securityError: — Distribué si un appel à Socket.connect() tente de se connecter à un serveur qui ne fournit pas de fichier de régulation de socket ou à un serveur dont le fichier de régulation n’accorde pas à l’hôte appelant l’accès au port spécifié. Pour plus d’informations sur les fichiers de régulation, voir la rubrique « Contrôles de site Web (fichiers de régulation) » dans le Guide du développeur d’ActionScript 3.0 , ainsi que la rubrique Sécurité du Pôle de développement Flash Player (disponible en anglais uniquement).
|
Valeur émise
IOError — Lorsque vous ne spécifiez pas d’hôte et que la connexion échoue.
| |
SecurityError — Lorsque vous spécifiez un port de socket inférieur à zéro ou supérieur à 65535.
|
close | Evénement |
flash.events.Event
propriété Event.type =
flash.events.Event.CLOSE
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Distribué lorsque le serveur ferme la connexion socket.
L’événement close
se produit uniquement lorsque le serveur ferme la connexion. Il n’est pas distribué lorsque vous appelez la méthode Socket.close()
.
Event.CLOSE
définit la valeur de la propriété type
d’un objet événement close
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
target | Objet dont la connexion a été fermée. |
connect | Evénement |
flash.events.Event
propriété Event.type =
flash.events.Event.CONNECT
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Distribué lorsqu’une connexion réseau est établie.
La constanteEvent.CONNECT
définit la valeur de la propriété type
d’un objet événement connect
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
target | Objet Socket ou XMLSocket qui a établi une connexion réseau. |
ioError | Evénement |
flash.events.IOErrorEvent
propriété IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération d’envoi ou de réception.
Lorsqu’il s’avère impossible de valider un certificat de serveur, l’événement d’erreur distribué est de type IOError. Dans ce cas, vous pouvez vérifier la propriété serverCertificateStatus
pour déterminer la cause du problème.
type
d’un objet d’événement ioError
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
errorID | Un numéro de référence associé à l’erreur spécifique (AIR uniquement). |
target | Objet réseau sur lequel l’erreur d’entrée/sortie s’est produite. |
text | Texte à afficher en tant que message d’erreur. |
securityError | Evénement |
flash.events.SecurityErrorEvent
propriété SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Distribué lorsqu’un appel à SecureSocket.connect()
échoue en raison d’une restriction de sécurité.
Un événement d’erreur de sécurité est distribué lorsque le code qui s’exécute dans Flash Player ou dans AIR à l’extérieur du sandbox de sécurité de l’application tente d’établir une connexion à un serveur dans un domaine différent ou sur un port inférieur à 1024, et que le serveur ne fournit pas de fichier de régulation autorisant la connexion. Notez que le code qui s’exécute dans le sandbox de l’application AIR peut se connecter à un serveur à n’importe quel domaine et sur les ports inférieurs à 1024 sans un fichier de régulation.
La constanteSecurityErrorEvent.SECURITY_ERROR
définit la valeur de la propriété type
d’un objet événement securityError
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
target | Objet réseau signalant l’erreur de sécurité |
text | Texte à afficher en tant que message d’erreur. |
Eléments de l’API associés
socketData | Evénement |
flash.events.ProgressEvent
propriété ProgressEvent.type =
flash.events.ProgressEvent.SOCKET_DATA
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 2 |
Distribué lorsqu’un socket a reçu des données. Les événements de type socketData
n’utilisent pas la propriété ProgressEvent.bytesTotal
.
type
d’un objet événement socketData
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | Objet qui traite activement l’événement. |
bytesLoaded | Nombre d’éléments ou d’octets chargés lors du traitement de l’événement par l’écouteur. |
bytesTotal | 0 ; cette propriété n’est pas utilisée par les objets événement socketData . |
target | Socket indiquant la progression. |
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, 09:30 AM Z