2015-02-01 7 views
0

자체 서명 된 인증을 사용하여 트래픽 데이터를 암호화하고 있습니다. 내 .KEY가 .crt 및 파일이 내가 소켓을 사용했다 을/etc/nginx를/SSL/HTTP 대신 HTTPS가있는 socket.io를 사용하십시오.

(some_file.keysome_file.crt)

에 있습니다. HTTP를 통해 io하지만 그것을 https로 가져 오려고했습니다. 여기 내 실제 코드는 다음과 같습니다

var formidable = require('formidable'); 
var express = require('express'); 
var fs = require('fs'); 

var privateKey = fs.readFileSync('../etc/nginx/ssl/some_file.key').toString(); 
var certificate = fs.readFileSync('../etc/nginx/ssl/some_file.crt').toString(); 

//how can I exclude this? (I have no intermediate, should I?) 
var ca = fs.readFileSync('../intermediate.crt').toString(); 

var app = express.createServer({key:privateKey,cert:certificate,ca:ca }); 
var io = require('socket.io'); 

app.listen(3000, function(){ 
    //wait on 3000 
}); 

app.post('/posts', function(req, res){ 
    //server communication 
}); 

io.on('connection', function(socket){ 
    //wait on connections 
}); 

클라이언트 측 :

var socket = io(url + ":3000", { "secure": true, 'connect timeout': 5000 }); 

이 그것을 할 수있는 올바른 방법이 있나요? 예를 들어 https 코드를 기반으로했기 때문에 이것이 충분히 좋은지는 의심 스럽습니다. (그렇지는 않지만 가까이 있어야합니다.) 코드를 실행하면 오류가 발생합니다. no such file or directory '../etc/nginx/ssl/some_file.key' ...

+0

파일이/etc/nginx ...에있는 경우 경로가 ../ etc/nginx ... 경로를 사용하는 이유는 무엇입니까? 그리고 중급은 필요하지 않습니다. – Dslayer

답변

0

사용하는 익스프레스 버전에 따라 크게 달라 지지만이 방법으로 사용합니다. 이것은 버전 3.4입니다

var express = require('express') 
, app = express() 
,fs = require('fs') 
,events = require('events'); 
... 
var options = { 
    key: fs.readFileSync('/etc/nginx/ssl/some_file.key'), 
    cert: fs.readFileSync('/etc/nginx/ssl/some_file.crt') 
}; 

/* 
*Configuration 
* 
*/ 
var server = require('https').createServer(options, app), io = require("socket.io").listen(server); 
var port = 8443; 
var ipaddr = '0.0.0.0'; 

app.configure(function() { 
    app.set('port', port); 
    app.set('ipaddr', ipaddr); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    ... 
}); 
관련 문제