如何啟動並執行基本 HTTPS Web 伺服器

在系統上安裝了 node.js 後,你只需按照以下步驟操作即可執行支援 HTTP 和 HTTPS 的基本 Web 伺服器!

第 1 步:構建證書頒發機構

  1. 建立要儲存金鑰和證書的資料夾:

    mkdir conf

  2. 轉到該目錄:

    cd conf

  3. 抓取此 ca.cnf 檔案以用作配置快捷方式:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf

  4. 使用此配置建立新的證書頒發機構:

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem

  5. 既然我們在 ca-key.pemca-cert.pem 中擁有我們的證書許可權,那麼讓我們為伺服器生成一個私鑰:

    openssl genrsa -out key.pem 4096

  6. 抓取此 server.cnf 檔案以用作配置快捷方式:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf

  7. 使用此配置生成證書籤名請求:

    openssl req -new -config server.cnf -key key.pem -out csr.pem

  8. 簽署請求:

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

步驟 2:將證書安裝為根證書

  1. 將你的證書複製到根證書的資料夾:

    sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem

  2. 更新 CA 商店:

    sudo update-ca-certificates

第 3 步:啟動節點伺服器

首先,你要建立一個包含實際伺服器程式碼的 server.js 檔案。

Node.js 中 HTTPS 伺服器的最小設定如下:

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

var httpsOptions = {
    key: fs.readFileSync('path/to/server-key.pem'),
    cert: fs.readFileSync('path/to/server-crt.pem')
};

var app = function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

https.createServer(httpsOptions, app).listen(4433);

如果你還想支援 http 請求,則需要進行以下小修改:

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

var httpsOptions = {
    key: fs.readFileSync('path/to/server-key.pem'),
    cert: fs.readFileSync('path/to/server-crt.pem')
};

var app = function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);
  1. 轉到 server.js 所在的目錄:

    cd /path/to

  2. 執行 server.js

    node server.js