Node.js: 一個剛剛夠用的 HTTPS 伺服器

RecoReco發表於2019-03-04

有時候,需要建立一個https伺服器,以便測試使用。使用node.js完成此項工作還是比較簡單的。另外,為了可以建立https,需要openssl工具棧。

首先建立證照:

openssl genrsa -out key.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
rm csr.pem複製程式碼

然後可以看到生成的兩個檔案:

$ls *.pem 
cert.pem    key.pem複製程式碼

建立node.js檔案

編輯js原始碼檔案(server.js)

var https = require(`https`);
var fs = require(`fs`);
var options = {
  key: fs.readFileSync(`key.pem`),
  cert: fs.readFileSync(`cert.pem`)
};
var a = https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end(JSON.stringify({foo:"bar"}))
}).listen(8000);複製程式碼

##嘗試

執行伺服器:

node server.js複製程式碼

然後訪問:

https://localhost:8000複製程式碼

可以看到json檔案的話,就算成功。

如果是http伺服器

這樣情況,不需要證照,程式碼改成下面的就可以了。

const http = require(`http`)  
const port = 3000
const requestHandler = (request, response) => {  
  console.log(request.url)
  response.end(JSON.stringify({foo:"bar"}))
}
const server = http.createServer(requestHandler)
server.listen(port, (err) => {  
  if (err) {
    return console.log(`something bad happened`, err)
  }
  console.log(`server is listening on ${port}`)
})複製程式碼

相關文章