2015-08-29 93 views
2

我對ssl非常陌生,並且無法使用https設置我的節點項目。我已經註冊並獲得了StartSSL的免費證書。我在一個名爲key.pem的文件中有我的私鑰。我驗證了我的域名,並將我的證書存放在cert.pem文件中。我應該在哪裏存儲我的密鑰和https服務器證書(Node.js)

下面是我有我的服務器上的HTTP設置:

var server = require('http').createServer(app); 
    var port = process.env.PORT || 3000; 
    server.listen(port, function() { 
     console.log('Server listening at port %d', port); 
    }); 

這工作得很好,我的所有頁面加載相應。 這裏是如何我試圖建立我的HTTPS服務器:

var https = require("https"); 
var fs = require("fs"); 
var key_file = "key.pem"; 
var cert_file = "cert.pem"; 
var passphrase = "..."; 
var config  = { 
    key: fs.readFileSync(key_file), 
    cert: fs.readFileSync(cert_file), 
    passphrase: passphrase 
}; 
var server = https.createServer(config,app).listen(443); 

的問題是,本地主機將不會加載任何東西。我在控制檯中沒有出現任何錯誤,這很令人討厭,因爲我不知道自己做錯了什麼。正如你所看到的,我只是把我的鑰匙和證書放在我的項目的根目錄中,我不確定我是否應該這樣做。 我不應該只能到localhost:443或https://localhost:443並看到我的網站?我試圖按照6個教程現在,似乎無法得到任何工作。我是否做對了?因爲我沒有從客戶那裏得到任何我認爲我應該做的證書。

試過這個,以及這也沒有工作:即使它說,它監聽443控制檯

var https = require("https"); 
var constants = require("constants"); 
var fs = require("fs"); 
var passphrase = "..."; 
https.createServer({ 
    key: fs.readFileSync("key.pem"), 
    cert: fs.readFileSync("cert.pem"), 
    passphrase: passphrase, 
    secureProtocol: 'SSLv23_method', 
    honorCipherOrder: true, 
    secureOptions: constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_SSLv2 
}, function(req, res) { 
    req.end("Hello, SSL World!"); 
}).listen(443, function() { 
    console.log("SSL Proxy listening on port 443"); 
}); 

無法獲取的hello world。


編輯: 這是我的整個index.js,我仍然不能得到的hello world。所有的依賴關係都被安裝。可能是什麼問題?

var express = require('express'); 
var app = express(); 
var https = require("https"); 
var fs = require("fs"); 
var options = { 
    key: fs.readFileSync('key.pem'), 
    cert: fs.readFileSync('cert.pem') 
}; 
https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(8000); 

回答

相關問題