簡體   English   中英

如何在node express socket.io下設置SSL?

[英]How to setup SSL under node express socket.io?

我基本上有像這樣開始的node.js代碼:

var app = require('express')();
var http = require('http').createServer(app).listen(5051, function() {
    console.log('listening on 127.0.0.1:5051');
});
var io = require('socket.io')(http);
var lobby = io.of('/lobby');

lobby.on("connection", function (socket) {
    console.log("Successful connection lobby");
});

所以我啟動服務器,啟動應用程序,建立連接,沒問題。 但是,嘗試添加SSL無效。 我遵循了使用內部地址作為通用名稱從該網站創建證書的說明。

var app = require('express')();
var fs = require('fs');
var options = {
    key     : fs.readFileSync('/"path_to"/hacksparrow-key.pem'),
    cert    : fs.readFileSync('/"path_to"/hacksparrow-cert.pem') 
};
var https = require('https').createServer(options,app).listen(5051, function() {
    console.log('listening on 127.0.0.1:5051');
});
var io = require('socket.io')(https);
var lobby = io.of('/lobby');
lobby.on("connection", function (socket) {
        console.log("Successful connection lobby");
    });

確保我的客戶端使用https而不是http,沒有連接,什么也沒有。 任何人都知道為什么會這樣,而且,如果我使用的是Nginx之類的東西,並且在上面使用了ssl,是否還需要執行此步驟?

聽起來問題在於nginx正在將HTTP請求發送到您的節點https服務器。

如果將nginx設置為使用ssl,則節點不必使用ssl。 如果需要,兩台服務器都可以使用ssl。

您的證書通常會使用密碼生成。 這是啟動SSL所必需的。

因此,當您啟動應用程序時,node.js將提示您一次。 您可以通過在變量“選項”中添加“密碼”鍵來繞開該密碼

var options = {
    key     : fs.readFileSync('/"path_to"/hacksparrow-key.pem'),
    cert    : fs.readFileSync('/"path_to"/hacksparrow-cert.pem'),
    passphrase: type_your_certificate's_passphrase
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM