with tls symantec site secure gratis digitales comprar certificados certificado ssl ssl-certificate websocket

ssl - tls - Secure websockets con certificado autofirmado



symantec secure site with ev (3)

Lo hice funcionar siguiendo esto:

https://github.com/einaros/ws/blob/master/test/WebSocketServer.test.js#L514

Primero genere sus certificaciones autofirmadas:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 100 -nodes

Luego, cree su httpsServer desde una aplicación express utilizando el servidor https incorporado del nodo:

var privateKey = fs.readFileSync(''sslcert/key.pem'', ''utf8''); var certificate = fs.readFileSync(''sslcert/cert.pem'', ''utf8''); var credentials = {key: privateKey, cert: certificate}; var express = require(''express''); var app = express(); //... bunch of other express stuff here ... //pass in your express app and credentials to create an https server var httpsServer = https.createServer(credentials, app); httpsServer.listen(8443);

Luego, configure su servidor de websocket (irónicamente, esto utilizará el mismo puerto que el servidor http, no lo sabía, pero supongo que los protocolos pueden compartir puertos? Esto me tuvo funcionando un tiempo).

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(''something''); });

Ahora vaya a https://0.0.0.0:8443 servidor y acepte el certificado autofirmado en Chrome. Entonces websockets ahora debería funcionar isnide el navegador.

Abra una consola devtools de Chrome y escriba:

var ws = new WebSocket(''wss://0.0.0.0:8443''); ws.send(''foo'');

.... o el host: puerto que usaste para httpsServer, la clave aquí es que estás usando el protocolo wss://

En su nodo de servidor web express, debería ver un mensaje registrado en la consola. Inicie el servidor con el node ./server.js

http://www.chovy.com/web-development/self-signed-certs-with-secure-websockets-in-node-js/

Quiero usar Websockets seguros para mejorar la tasa de éxito. No necesito el cifrado.

¿Debo ver una advertencia cuando use Websockets seguros (wss: //example.com) con un certificado autofirmado? Lo probé con Chrome 10 y no veo una advertencia y no me pide que acepte el certificado. Simplemente funciona.

¿Es esto un error en Chrome o el comportamiento esperado? ¿Podré usar certificados autofirmados en el futuro?

Gracias


Sí, ese es el comportamiento actual de Chrome, pero no esperaría que siga siendo la política en el futuro. En Firefox 4 (si habilita WebSockets en about: config) recibirá una advertencia sobre el certificado. Para aprobar el certificado también puede tener que ingresar la URL de WebSockets en el navegador (sustituir wss por https) y aprobarla allí primero (ya que la advertencia de la conexión WebSockets sobre el certificado autofirmado puede no darle la oportunidad de aprobarlo )

Esperaría que todos los navegadores convergieran en el comportamiento correcto que es arrojar un cuadro de diálogo de advertencia que permita la aprobación del certificado autofirmado.


Los certificados autofirmados son rechazados por Chrome desde v19 ( http://crbug.com/53836 ). Si intenta conectarse a una URL de wss que utiliza un certificado autofirmado, entonces la solicitud se cancela de manera silenciosa.
Para permitir el uso de certificados autofirmados, inicie Chrome con el indicador --ignore-certificate-errors , e, g:

chromium --user-data-dir=/tmp/whatever --ignore-certificate-errors

Que yo sepa, no hay forma de que Firefox acepte su certificado autofirmado para wss. Entonces, simplemente use ws:// para probar en Firefox. Si está probando su aplicación web a través de https, debe alternar una preferencia para permitir las conexiones a (inseguro) ws:// URLs:

  1. Visita about:config
  2. Establezca network.websocket.allowInsecureFromHTTPS en true