2014-07-02 60 views
4

我試圖創建一個HTTPS服務器。我已經產生privatekey.pem和certicate.pem與Cygwin64以下說明:node.js上的服務器HTTPS不起作用

openssl genrsa -out privatekey.pem 1024 
openssl req -new -key privatekey.pem -out certrequest.csr 
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem 

,而我的服務器代碼是這樣的:

var https = require('https'); 
var fs = require('fs'); 

var options = { 
    key: fs.readFileSync('privatekey.pem'), 
    cert: fs.readFileSync('certificate.pem') 
}; 

https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(8001); 

當我嘗試連接到解決https://localhost:8001,該網頁是無法使用。誰能幫我?

+0

你可以嘗試通過異步檢索pem文件的內容嗎? – DrakaSAN

+1

如果你添加一個'listen'處理程序,它會執行什麼?'.listen(8001,function(){console.log('listening on port 8001!');})' – mscdex

回答

4

你的代碼絕對正常工作。我已經在我的本地主機上測試過它。我認爲問題在於你的關鍵一代。嘗試再次生成密鑰並運行您的服務器。我希望它會起作用。

注意:您生成的證書只能在本地主機上使用。所以,不要在任何在線IDE(例如codio.com,koding.com,cloud9.com等)嘗試此操作。如果你想這樣做,你必須從Verysign這樣的公司購買SSL證書。

OR

如果不試試下面的代碼。

第1步:打開終端,運行以下命令來生成私鑰文件「key.pem」

$ openssl genrsa 1024 > key.pem 

第2步:現在運行以下命令來生成SSL證書文件'開關cert.pem'

$ openssl req -x509 -new -key key.pem > key-cert.pem 

第3步:現在寫的'server.js'文件,內容如下。

var https = require('https'); 
var fs = require('fs'); 

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

https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(8001); 

步驟4:現在運行使用下面的命令的服務器文件。

$ node server.js 

第5步:現在在瀏覽器中點擊鏈接'https://localhost:8001',並接受證書,你會看到頁面上的「世界你好」消息。

相關問題