Estamos tratando de hacer que Socket.io flashsockets funcione en Internet Explorer 9 a través de HTTPS/WSS. Las tomas de corriente funcionan a través de HTTP, pero HTTPS nos está dando problemas. Estamos utilizando socket.io versión 0.8.7 y socket.io-client versión 0.9.1-1.Error de HTTPS "data length too long" en s3_pkt.c de Socket.io
Estamos ejecutando nuestro servidor websocket a través de SSL en el puerto 443. Hemos especificado la ubicación de nuestro archivo WebsocketMainInsecure.swf (estas son solicitudes ws entre dominios) en la ubicación correcta, y estamos cargando el archivo en el objeto swfobject incrustado sobre HTTPS.
Abrimos el puerto 843 en nuestro grupo de seguridad para nuestra instancia EC2 y el archivo de política de origen cruzado se está procesando con éxito a través de HTTP. No parece renderizar a través de HTTPS (Chrome arroja un error de conexión SSL).
Hemos probado dos versiones del archivo WebsocketMainInsecure.swf. El primero es el archivo proporcionado por Socket.io, que se construye fuera de WebsocketMainInsecure.as que no incluye la línea
Security.allowInsecureDomain("*");
Esto arroja el error en la línea de SCRIPT16389: Unspecified error.
WebSocket.__flash.setCallerUrl(location.href)
.
pensamos que era debido a que el archivo SWF no estaba permitiendo solicitudes HTTPS, así que sustituyen el archivo WebSocketMainInsecure.swf con la que se encuentra en este repo: https://github.com/gimite/web-socket-js, ya que incluye la línea
Security.allowInsecureDomain("*");
en el actionscript código. Cuando usamos esto, vimos que la conexión de la toma de corriente se desconectaba y reconectaba en un bucle infinito. Rastreamos el error hasta el archivo transport.js en la biblioteca socket.io en la función onSocketError en el prototipo de Transporte. Se lanza el error:
[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]
Incluso intentamos actualizar tanto Socket.IO y socket.io-cliente a la versión 0.9.6 y todavía tiene el error Access is denied
.
Este error ha sido muy difícil de depurar, y ahora no sabemos cómo hacer que las tomas de corriente flash funcionen. Nos preguntamos si podría tener que ver con el uso de una versión anterior de socket.io, o tal vez con que nuestro servidor de archivos de políticas no acepte solicitudes HTTPS, o tal vez con la forma en que el archivo WebSocketMainInsecure.swf de la web- socket-js github repo se construyó en relación con lo que socket.io-client espera.
Esto se puede pedir mejor en un foro diferente. . . ServerFault podría ser una buena apuesta. Aquí hay [una pregunta a partir de ahí sobre un error similar] (http://serverfault.com/questions/402152/error-in-openssl-s-client-data-length-is-too-long), y eso podría dar algunas pistas. – iND
@iND Vi esa pregunta pero no estoy seguro si me ayuda, ¿qué opinas? – user730569
Tengo un conocimiento muy limitado de la interacción del servidor de depuración, y este puede no ser el foro con la mayoría de los expertos en esa área. Puede obtener mejores respuestas en los foros más enfocados. Sin embargo, implica que esto puede no ser un problema de destello. El mensaje de error es el mismo, y el número de línea está a solo uno de distancia de su línea de error, por lo que creo que las soluciones, si ignora la información relacionada con LDAP, podrían tener algo que ver aquí. – iND