如何啟動並執行基本 HTTPS Web 伺服器
在系統上安裝了 node.js 後,你只需按照以下步驟操作即可執行支援 HTTP 和 HTTPS 的基本 Web 伺服器!
第 1 步:構建證書頒發機構
-
建立要儲存金鑰和證書的資料夾:
mkdir conf
-
轉到該目錄:
cd conf
-
抓取此
ca.cnf
檔案以用作配置快捷方式:wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf
-
使用此配置建立新的證書頒發機構:
openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem
-
既然我們在
ca-key.pem
和ca-cert.pem
中擁有我們的證書許可權,那麼讓我們為伺服器生成一個私鑰:openssl genrsa -out key.pem 4096
-
抓取此
server.cnf
檔案以用作配置快捷方式:wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf
-
使用此配置生成證書籤名請求:
openssl req -new -config server.cnf -key key.pem -out csr.pem
-
簽署請求:
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:將證書安裝為根證書
-
將你的證書複製到根證書的資料夾:
sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem
-
更新 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);
-
轉到
server.js
所在的目錄:cd /path/to
-
執行
server.js
:node server.js