Pacote | flash.net |
Classe | public class SecureSocket |
Herança | SecureSocket Socket EventDispatcher Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Suporte a perfil do AIR: este dispositivo conta com o suporte de todos os sistemas operacionais para desktop, mas não é compatível com nenhum dispositivo AIR for TV. Em dispositivos móveis, há suporte para Android e também para o iOS, a partir do AIR 20. Você pode testar o suporte que em tempo de execução utilizando a propriedadeSecureSocket.isSupported
. Consulte Suporte a perfil do AIR para obter mais informações sobre o suporte de API através de múltiplos perfis.
Os protocolos SSL/TLS fornecem um mecanismo para manipular os dois aspectos de uma conexão de soquete segura:
- Criptografia da transmissão de dados sobre o soquete
- Autenticação da identidade do host via seu certificado
Os protocolos de criptografia suportados são SSL 3.1 e superiores, e TIS 1.0 e superiores. (TIS é o protocolo sucessor de SSL. TIS 1.0 é igual a SSL 3.1, TIS 1.1 é igual a SSL 3.2 e assim por diante.) As versões de SSL 3.0 ou mais antigas não são compatíveis.
A validação do certificado de servidor é realizada utilizando o trust store e o suporte de validação de certificado da plataforma de cliente. Além disso, é possível adicionar seus próprios certificados de maneira programada com o método addBinaryChainBuildingCertificate()
. Atualmente, não há suporte para esta API no iOS. A utilização dessa API no iOS criaria uma exceção: "ArgumentError: Error #2004"
A classe SecureSocket só conectará a servidores com certificados válidos e confiáveis. Você não poderá escolher se conectar a um servidor mesmo com um problema com seu certificado. Por exemplo, não há nenhuma maneira de se conectar a um servidor com um certificado vencido. O mesmo é verdade para um certificado que não encadeia com um certificado da âncora confiável. A conexão não será realizada, embora o certificado fosse válido de outra maneira.
A classe SecureSocket é útil para executar a comunicação criptografada com um servidor confiável. Em outros aspectos, um objeto SecureSocket se comporta como um objeto Socket comum.
Para utilizar a classe SecureSocket, crie um objeto SecureSocket (newSecureSocket ()
). Em seguida, instale seus ouvintes e executeSecureSocket.connect (host, porta)
. Quando você se conectar ao servidor, o soquete despachará um evento connect
. Uma conexão bem sucedida é aquela na qual os protocolos de segurança do servidor são suportados e seu certificado é válido e confiável. Se o certificado não puder ser validado, o Soquete envia um evento IOError
.
Importante: O Protocolo de Status de Certificado On-line (OCSP) não é suportado por todos os sistemas operacionais. Os usuários também podem desativar a verificação de OCSP em computadores individuais. Se OCSP não for suportado ou for desativado e um certificado não tiver as informações necessárias para verificar a revogação que usa uma Lista de Revogação de Certificado (CRL), então a revogação de certificado não será verificada. O certificado será aceito se for válido. Isto pode permitir que um servidor utilize um certificado revogado.
Elementos da API relacionados
Propriedade | Definido por | ||
---|---|---|---|
bytesAvailable : uint [somente leitura]
O número de bytes de dados disponíveis para leitura no buffer de entrada. | Socket | ||
bytesPending : uint [somente leitura]
Indica o número de bytes restantes no buffer de gravação. | Socket | ||
connected : Boolean [somente leitura]
Indica se este objeto Socket está conectado no momento. | Socket | ||
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
endian : String
Indica a ordem de byte para os dados. | Socket | ||
isSupported : Boolean [estático] [somente leitura]
Indica se os soquetes seguros são suportados no sistema atual. | SecureSocket | ||
localAddress : String [somente leitura]
O endereço IP deste soquete está vinculado à máquina local. | Socket | ||
localPort : int [somente leitura]
A porta deste soquete está vinculada à máquina local. | Socket | ||
objectEncoding : uint
Controla a versão do AMF usada ao gravar ou ler um objeto. | Socket | ||
remoteAddress : String [somente leitura]
O endereço IP da máquina remota à qual este soquete está conectado. | Socket | ||
remotePort : int [somente leitura]
A porta na máquina remota à qual este soquete está conectado. | Socket | ||
serverCertificate : X509Certificate [somente leitura]
Mantém o certificado X.509 obtido do servidor após uma conexão SSL/TLS segura for estabelecida. | SecureSocket | ||
serverCertificateStatus : String [somente leitura]
Retorna o status do certificado do servidor. | SecureSocket | ||
timeout : uint
Indica o número de milissegundos de espera por uma conexão. | Socket |
Método | Definido por | ||
---|---|---|---|
Cria um novo objeto SecureSocket. | SecureSocket | ||
Adiciona um certificado X.509 à cadeia de certificado local que seu sistema utiliza para validar o certificado de servidor. | SecureSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. | EventDispatcher | ||
Fecha o soquete. | Socket | ||
[substituir]
Conecta o soquete ao host especificado e à porta usando SSL ou TIS. | SecureSocket | ||
Envia um evento para o fluxo de eventos. | EventDispatcher | ||
Descarrega todos os dados acumulados no buffer de saída do soquete. | Socket | ||
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. | EventDispatcher | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Lê um valor booliano do soquete. | Socket | ||
Lê um byte com sinal do soquete. | Socket | ||
Lê o número de bytes de dados especificados pelo parâmetro de comprimento a partir do soquete. | Socket | ||
Lê do soquete um número de ponto flutuante de precisão dupla IEEE 754. | Socket | ||
Lê do soquete um número de ponto flutuante de precisão única IEEE 754. | Socket | ||
Lê um inteiro de 32 bits com sinal do soquete. | Socket | ||
Lê uma string de vários bytes a partir do fluxo de bytes, usando o conjunto de caracteres especificado. | Socket | ||
readObject():*
Lê um objeto a partir do soquete, codificado no formato serializado AMF. | Socket | ||
Lê um inteiro de 16 bits com sinal do soquete. | Socket | ||
Lê um byte sem sinal do soquete. | Socket | ||
Lê um inteiro de 32 bits sem sinal do soquete. | Socket | ||
Lê um inteiro de 16 bits sem sinal do soquete. | Socket | ||
Lê uma string UTF-8 do soquete. | Socket | ||
Lê o número de bytes de dados UTF-8 especificados pelo parâmetro "length" a partir do soquete e retorna uma string. | Socket | ||
Remove um ouvinte do objeto EventDispatcher. | EventDispatcher | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object | ||
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. | EventDispatcher | ||
Grava um valor booliano no soquete. | Socket | ||
Grava um byte no soquete. | Socket | ||
Grava uma sequência de bytes a partir da matriz de bytes especificada. | Socket | ||
Grava no soquete um número de ponto flutuante de precisão dupla IEEE 754. | Socket | ||
Grava no soquete um número de ponto flutuante de precisão única IEEE 754. | Socket | ||
Grava um inteiro de 32 bits com sinal no soquete. | Socket | ||
Grava uma string de vários bytes a partir do fluxo de bytes, usando o conjunto de caracteres especificado. | Socket | ||
Grava um objeto no soquete no formato serializado AMF. | Socket | ||
Grava um inteiro de 16 bits no soquete. | Socket | ||
Grava um inteiro de 32 bits sem sinal no soquete. | Socket | ||
Grava os seguintes dados no soquete: um inteiro de 16 bits sem sinal, que indica o comprimento da string UTF-8 especificada em bytes, seguido da string propriamente dita. | Socket | ||
Grava uma string UTF-8 no soquete. | Socket |
Evento | Resumo | Definido por | ||
---|---|---|---|---|
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR ganha o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado quando o servidor fecha a conexão de soquete. | SecureSocket | |||
Despachado quando uma conexão de rede foi estabelecida. | SecureSocket | |||
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR perde o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado quando ocorre um erro de entrada/saída que resulta na falha de uma operação de envio ou recebimento. | SecureSocket | |||
Despachado quando um soquete move dados do buffer de gravação para a camada de transporte de rede | Socket | |||
Despachado quando um chamada para SecureSocket.connect() falha por causa de uma restrição de segurança. | SecureSocket | |||
Despachado quando um soquete recebeu dados. | SecureSocket |
isSupported | propriedade |
isSupported:Boolean
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Indica se os soquetes seguros são suportados no sistema atual.
Os soquetes seguros não são suportados em todas as plataformas. Verifique esta propriedade antes de tentar criar uma nova instância SecureSocket.
Implementação
public static function get isSupported():Boolean
serverCertificate | propriedade |
serverCertificate:X509Certificate
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Mantém o certificado X.509 obtido do servidor após uma conexão SSL/TLS segura for estabelecida. Se uma conexão segura não for estabelecida, essa propriedade será definida em null
. No momento, não há suporte para o iOS e, por esse motivo, será definido como null
.
Para obter mais informações sobre certificados X.509, consulte RFC2459.
Implementação
public function get serverCertificate():X509Certificate
serverCertificateStatus | propriedade |
serverCertificateStatus:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Retorna o status do certificado do servidor.
O status é CertificateStatus.UNKNOWN
até que o soquete tente se conectar a um servidor. Após a validação, o status será uma das strings enumeradas pela classe CertificateStatus. A conexão apenas tem sucesso quando o certificado é válido e confiado. Assim, após um evento connect
o valor de serverCertificateStatus
sempre será trusted
.
Observação: uma vez que o certificado foi validado ou rejeitado, o valor de status não é atualizado até o seguinte chamada ao método connect()
. Chamar close()
não reinicializa o valor de status "a desconhecido".
Implementação
public function get serverCertificateStatus():String
Elementos da API relacionados
SecureSocket | () | Construtor |
public function SecureSocket()
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Cria um novo objeto SecureSocket.
Verifique SecureSocket.isSupported
antes de tentar criar uma instância SecureSocket. Se os soquetes de SSL 3.0 ou de TLS 1.0 não forem suportados, o tempo de execução emitirá um IllegalOperationError.
Lança
IllegalOperationError — Quando a Versão 3.0 de SSL (e superiores) ou a Versão 1.0 de TIS (e superiores) não for suportada.
| |
SecurityError — Arquivos SWF locais não confiáveis não podem se comunicar com a Internet. Você pode conciliar esse problema reclassificando o arquivo SWF como local com rede ou confiável.
|
addBinaryChainBuildingCertificate | () | método |
public function addBinaryChainBuildingCertificate(certificate:ByteArray, trusted:Boolean):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Adiciona um certificado X.509 à cadeia de certificado local que seu sistema utiliza para validar o certificado de servidor. O certificado é temporário e permanece somente na duração da sessão.
A validação de certificado de servidor confia no armazenamento seguro do sistema para a construção da sequência de certificado e validação. Utilize este método para adicionar de maneira programada sequências de certificado adicionais e âncoras confiáveis.
No Mac OS, a sequência de chaves do Sistema é a sequência padrão utilizada durante o processo de acordo de SSL/TLS. Qualquer certificado intermediário nessa sequência são incluídas na construção da sequência da certificação.
O certificado que você adicionou com este API deve ser um certificado X.509 codificado com DER. Se o parâmetro trusted
for true, o certificado que você adicionará com este API será considerado uma âncora confiável.
Para obter mais informações sobre certificados X.509, consulte RFC2459.
Parâmetros
certificate:ByteArray — Um objeto ByteArray que contém um certificado digital x.509 codificado com DER.
| |
trusted:Boolean — Defina como true para designar este certificado como âncora confiável.
|
Lança
ArgumentError — Quando o certificado não puder ser adicionado.
|
connect | () | método |
override public function connect(host:String, port:int):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Conecta o soquete ao host especificado e à porta usando SSL ou TIS.
Quando você realizar a chamada do método SecureSocket.connect ()
, o soquete tentará o acordo de SSL/TLS com o servidor. Se o acordo for bem-sucedido, o soquete tenta validará o certificado do servidor. Se o certificado for válido e confiável, a conexão será estabelecida e o soquete enviará um evento connect
. Se o reconhecimento falhar ou o certificado não puder ser validado, o soquete enviará um IOError
. É possível verificar o resultado de validação de certificado lendo a propriedade serverCertificateStatus
após o evento IOError
for despachado. (Quando o evento connect
é despachado, o status do certificado é sempre trusted
.)
Se o soquete já estiver conectado, a conexão existente será fechada primeiro.
Parâmetros
host:String — O nome ou o endereço IP do host para conexão.
| |
port:int — O número da porta para conexão.
|
Eventos
connect: — Despachado quando uma conexão de rede foi estabelecida.
| |
ioError: — Despachado se um host for especificado e se um ocorrer um erro de entrada/saída que resulte na falha da conexão. Isto inclui erros de handshake SSL/TLS e falha ao validar com sucesso o certificado de servidor do host.
| |
securityError: — Despachado se uma chamada ao Socket.connect() tentar conectar-se a um servidor que não fornece arquivo de diretivas de soquete ou a um servidor cujo arquivo de diretivas não concede ao host da chamada o acesso à porta especificada. Para obter mais informações sobre arquivos de política, consulte "controles de website (arquivos de política)" no Guia do Desenvolvedor do ActionScript 3.0 e o tópico do Centro do Desenvolvedor do Flash Player: Security.
|
Lança
IOError — Quando você não especifica um host e a conexão falha.
| |
SecurityError — Quando você especifica uma porta de soquete inferior a zero ou superior a 65535.
|
close | Evento |
flash.events.Event
propriedade Event.type =
flash.events.Event.CLOSE
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Despachado quando o servidor fecha a conexão de soquete.
O evento close
somente é despachado quando o servidor encerra a conexão; ele não é despachado quando você chama o método Socket.close()
.
Event.CLOSE
define o valor da propriedade type
de um objeto de evento close
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto cuja conexão foi fechada. |
connect | Evento |
flash.events.Event
propriedade Event.type =
flash.events.Event.CONNECT
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Despachado quando uma conexão de rede foi estabelecida.
A constanteEvent.CONNECT
define o valor da propriedade type
de um objeto de evento connect
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O soquete ou objeto XMLSocket que estabeleceu uma conexão de rede. |
ioError | Evento |
flash.events.IOErrorEvent
propriedade IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Despachado quando ocorre um erro de entrada/saída que resulta na falha de uma operação de envio ou recebimento.
Quando um certificado do servidor não pode ser validado, o evento de erro despachado é um IOError. Nesse caso, você pode verificar a propriedade serverCertificateStatus
para determinar a causa do problema.
type
de um objeto de evento ioError
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
errorID | Um número de referência associado ao erro específico (somente AIR). |
target | O objeto de rede que está recebendo o erro de entrada/saída. |
text | Texto a ser exibido como uma mensagem de erro. |
securityError | Evento |
flash.events.SecurityErrorEvent
propriedade SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Despachado quando um chamada a SecureSocket.connect()
falha por causa de uma restrição de segurança.
Um evento de erro de segurança é despachado quando o código executado no Flash Player ou no AIR do lado de fora da área de proteção de segurança do aplicativo, tenta conectar a um servidor em um domínio diferente, ou a uma porta abaixo de 1024 e o servidor não fornece um arquivo de política que permite a conexão. Observe que o código executado dentro da área de proteção do aplicativo de AIR pode conectar a um servidor em qualquer domínio e em portas abaixo 1024, sem um arquivo de política.
A constanteSecurityErrorEvent.SECURITY_ERROR
define o valor da propriedade type
de um objeto de evento securityError
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto de rede que reporta o erro de segurança. |
text | Texto a ser exibido como uma mensagem de erro. |
Elementos da API relacionados
socketData | Evento |
flash.events.ProgressEvent
propriedade ProgressEvent.type =
flash.events.ProgressEvent.SOCKET_DATA
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 2 |
Despachado quando um soquete recebeu dados. Eventos do tipo socketData
não usam a propriedade ProgressEvent.bytesTotal
.
type
de um objeto de evento socketData
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando o Event ativamente. |
bytesLoaded | O número de itens ou bytes carregados no momento em que o ouvinte processa o evento. |
bytesTotal | 0; esta propriedade não é usada pelos objetos socketData . |
target | O soquete que está reportando o progresso. |
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 ); } } }
Wed Jun 13 2018, 11:10 AM Z