Socket.io Flashsockets via HTTPS

3

Estamos tentando fazer com que os flashsockets do Socket.io funcionem no Internet Explorer 9 em HTTPS / WSS. Os flashs funcionam em HTTP, mas o HTTPS está nos dando problemas. Estamos usando o socket.io versão 0.8.7 e o socket.io-client versão 0.9.1-1.

Estamos executando nosso servidor websocket via SSL na porta 443. Especificamos a localização do nosso arquivo WebsocketMainInsecure.swf (são solicitações ws entre domínios) no local correto, e estamos carregando o arquivo em o swfobject incorporado por HTTPS.

Abrimos a porta 843 em nosso grupo de segurança para nossa instância do EC2 e o arquivo de política de origem cruzada está sendo renderizado com êxito por HTTP. Ele não parece renderizar por HTTPS (o Chrome gera um erro de conexão SSL).

Tentamos duas versões do arquivo WebsocketMainInsecure.swf. O primeiro é o arquivo fornecido pelo Socket.io, que é construído a partir do WebsocketMainInsecure.as que não inclui a linha

Security.allowInsecureDomain("*");

Isso gera o erro SCRIPT16389: Unspecified error. na linha WebSocket.__flash.setCallerUrl(location.href) .

Achamos que era porque o arquivo SWF não permitia solicitações HTTPS, então substituímos o arquivo WebSocketMainInsecure.swf pelo encontrado neste repo: link porque inclui o

Security.allowInsecureDomain("*");

linha no código de actionscript. Quando usamos isso, vimos que a conexão do flashsocket ficava desconectando e reconectando em um loop infinito. Rastreamos o erro no arquivo transport.js na biblioteca socket.io na função onSocketError no protótipo Transport. Ele lança o erro:

[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]

Acreditamos que esse erro pode, de alguma forma, estar relacionado aos nossos certificados de subdomínio de caractere curinga ssl, mas não temos certeza.

Até tentamos atualizar o socket.io e o socket.io-client para a versão 0.9.6 e ainda temos o erro Access is denied.

Este erro tem sido muito difícil de depurar, e agora estamos perdendo a forma de fazer com que os flashsockets funcionem. Estamos nos perguntando se isso pode ter a ver com o uso de uma versão mais antiga do socket.io, ou talvez o nosso servidor de arquivos de política não aceita solicitações HTTPS, ou talvez até mesmo o modo como o arquivo WebSocketMainInsecure.swf da web- O repositório github do socket-js foi construído em relação ao que o socket.io-client espera.

Qualquer ajuda é muito apreciada!

    
por Justin Meltzer 20.07.2012 / 17:49

1 resposta

0

Parece que passou dos controles de XSS e, por suposto, parece que o erro de SSL é porque seu cliente de websocket não está se conectando ao SSL SSL.

Verifique seu SSL SSL usando: openssl s_client -connect servername:websocketport

Você deve ver um dump dos certificados SSL e se é confiável. Você também pode enviar uma solicitação se souber replicar seu cliente de websocket.

Além disso, use o Wireshark / Tcpdump para verificar quais portas estão sendo abertas. Um dump da seção "Rede" e do console da Developer Tool do Chrome pode ser interessante.

    
por 05.10.2012 / 14:23