2012-05-09 27 views
7

¿Cómo instalo un certificado (y una clave) https/ssl en sockjs (ejecutándose en nodejs)?Configuración de SSL con sockjs

Actualmente estoy ejecutando la configuración más básica, esto es, la configuración de ejemplo "eco". Es un siguiente:

var http = require('http'); 
var sockjs = require('sockjs'); 
var node_static = require('node-static'); 

// 1. Echo sockjs server 
var sockjs_opts = {sockjs_url: "http://cdn.sockjs.org/sockjs-0.3.min.js"}; 

var sockjs_echo = sockjs.createServer(sockjs_opts); 
sockjs_echo.on('connection', function(conn) { 
    conn.on('data', function(message) { 
     conn.write(message); 
    }); 
}); 

// 2. Static files server 
var static_directory = new node_static.Server(__dirname); 

// 3. Usual http stuff 
var server = http.createServer(); 
server.addListener('request', function(req, res) { 
    static_directory.serve(req, res); 
}); 
server.addListener('upgrade', function(req,res){ 
    res.end(); 
}); 

sockjs_echo.installHandlers(server, {prefix:'/echo'}); 

console.log(' [*] Listening on 0.0.0.0:9999'); 
server.listen(9999, '0.0.0.0'); 

Gracias!

Respuesta

10

yo bien se que trabajar por cambiar el código para:

var http = require('https'); 
var sockjs = require('sockjs'); 
var fs = require("fs"); 

var options = { 
    key: fs.readFileSync('ssl.key'), 
    cert: fs.readFileSync('ssl.crt') 
}; 

var echo = sockjs.createServer(); 
echo.on('connection', function(conn) { 
    conn.on('data', function(message) { 
     conn.write(message); 
    }); 
    conn.on('close', function() {}); 
}); 

var server = http.createServer(options); 
echo.installHandlers(server, {prefix:'/echo'}); 
server.listen(9999, '0.0.0.0'); 
+1

Si está utilizando un certificado autofirmado (por ejemplo, para el desarrollo local), entonces tendrá que confirmar la excepción de seguridad para SSL o los websockets no se conectarán. Simplemente diríjase a 'http: // localhost: 9999/info' (o el host/puerto que esté usando) y siga las indicaciones que le dará su navegador. – robbrit

+3

¿Alguna idea de cómo hacer esto mediante programación al usar [sockjs-client-node] (https://github.com/sockjs/sockjs-client-node)? –