2012-05-09 14 views
7

Come si installa un certificato (e una chiave) https/ssl in sockjs (in esecuzione su nodejs)?Impostazione SSL con sockjs

Attualmente sto eseguendo la configurazione più semplice, questa è la configurazione di esempio "echo". È uno dei seguenti:

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'); 

Grazie!

risposta

10

Va bene ho capito di lavorare modificando il codice a:

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

Se si utilizza un certificato self-signed (diciamo, per lo sviluppo locale), allora avrete bisogno di confermare l'eccezione di protezione per SSL o websocket non si connetteranno. Vai a 'http: // localhost: 9999/info' (o qualunque host/porta stai usando) e segui le istruzioni che il tuo browser ti fornirà. – robbrit

+3

Qualche idea su come eseguire questa operazione quando si utilizza [sockjs-client-node] (https://github.com/sockjs/sockjs-client-node)? –