Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Error al configurar el servidor wss: funciona en localhost, pero no con la dirección IP

Tengo problemas para configurar un servidor wss (Secure Websocket Server) en node.js. Cuando ejecutamos el servidor y lo probamos con un probador de websocket en línea y nos conectamos a wss://localhost:8888 , funciona. Pero cuando nos conectamos a wss://my_ip:8888 (ip encontrada con ifconfig ) da como resultado el error index.js:15 WebSocket connection to 'wss://192.168.1.217:8888/' failed .

Creé un repositorio de git para realizar pruebas fácilmente: https://github.com/DaanS8/wss_error

Posible información útil

Hicimos ping a la ip en el puerto 8888 con `telnet my_ip 8888`, que tuvo éxito. ¿Algún otro puerto falla, lo que significa que está escuchando?

Chrome se comporta de manera diferente a Firefox, en Chrome localhost funciona, pero en Firefox localhost ni siquiera funciona mientras usa las mismas pruebas en el probador de websocket en línea.

El código se ejecuta en un ubuntu vm en una máquina con Windows. Parece que ubuntu vm no tiene su propio firwall ( sudo ufw status da como resultado un error), simplemente apagar el firewall de Windows no cambia los errores.

Los certificados se generaron con los siguientes comandos:

 openssl genrsa -des3 -out myCA.key 2048 openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem Enter pass phrase for myCA.key: Country Name (2 letter code) [AU]:BE State or Province Name (full name) [Some-State]:Vlaams-Brabant Locality Name (eg, city) []:Leuven Organization Name (eg, company) [Internet Widgits Pty Ltd]:KU Leuven Organizational Unit Name (eg, section) []:Pno Common Name (eg server FQDN or YOUR name) []:Team x Email Address []:xxxx@xxxxxxxx.be openssl rsa -in myCA.key -text > private.pem

Mis principales fuentes:

  • https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/
  • Cómo crear un servidor websocket seguro (TLS/SSL)
  • main.ts fue copiado de una publicación de blog que temporalmente ya no puedo encontrar

Código

principales.ts:

 // Minimal amount of secure websocket server var fs = require('fs'); // read ssl certificate var privateKey = fs.readFileSync('certs/private.pem', 'utf8'); var certificate = fs.readFileSync('certs/myCA.pem', 'utf8'); var credentials = { key: privateKey, cert: certificate }; var https = require('https'); //pass in your credentials to create an https server var httpsServer = https.createServer(credentials); httpsServer.listen(8888); var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ server: httpsServer }); wss.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); ws.send('reply from server : ' + message) }); ws.send('something'); });

Ver github para claves, etc.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Prueba a usar cloudflaired
para descargar: Haga clic aquí
tutoría: haga clic aquí
puede ser el problema de las reglas del firewall y otros factores

EDITAR:
Este programa incluye un servidor liviano que actúa como un puente entre su computadora y los servidores de Cloudflair. Esto aloja el sitio en un subdominio temporal de forma gratuita.
si tiene una cuenta de cloudflair, le ayudará a establecer y configurar direcciones URL permanentes estáticas en lugar de cambiar dinámicamente cada vez
Lo siento, no sé sobre los precios ya que uso el plan gratuito para obtener más información, visite los documentos
Debido a esto, puede eludir muchas restricciones de Windows (como firewall), restricciones de isp (como nat), etc. Para que pueda concentrarse en el proyecto
También esto funciona incluso fuera de tu LAN. Solo para que sepas que también funciona fuera de la LAN. para compartir una vista previa rápida con otros.

over 4 years ago · Santiago Trujillo Denunciar

0

Su "probador de websocket en línea" no proporciona un código fuente fácilmente legible, por lo que no está claro qué está fallando. Mi conjetura: la validación del certificado TLS está fallando. (Los navegadores pueden tener sus propias reglas para localhost , por lo que puede funcionar para localhost en algunos navegadores).

Se está conectando a la IP , pero se genera Common Name: Team x . La implementación correcta del cliente TLS debería rechazar este tipo de conexión TLS, porque el nombre del servidor no coincide con el nombre TLS CN ('IP'!='Team x').

Soluciones:

1.) Genere el certificado TLS adecuado, donde Common Name coincida con la IP utilizada. Esta es una solución segura adecuada para su caso de uso (generalmente se usa el FQDN del servidor, porque el dominio se usa para la conexión y no la IP del servidor).

2.) Use el cliente websocket, que brinda la opción de deshabilitar la verificación de certificados.

3.) Abra https://IP:8888 y agregue la excepción TLS del navegador para el certificado usado. La excepción debe aplicarse también para el protocolo wss entonces.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda