這篇要講怎麼用Node.js建立一個HTTPS的server,如果你的certificate不是self-signed的,
那設定HTTPS並不難,產生CSR給CA provider,然後就會有certificate,把它放進去就好,
但如果是self-signed,那過程就有點麻煩,每次要弄的時候,都還是會有點忘記,所以乾脆把過程記錄下來好了。
1. Creating a private key and CSR
在create certificate之前,必須要先有private key
以及CSR
(certificate signing request),
所以我們要先generate出private key以及CSR。
# generate private key
$ openssl genrsa -des3 -passout pass:kenyang -out server.pass.key 2048
$ openssl rsa -passin pass:kenyang -in server.pass.key -out server.key
$ rm server.pass.key
# generate csr
$ openssl req -new -key server.key -out server.csr
2. Creating a certificate
有了key和CSR以後,我們就可以issue一張certificate出來,
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
3. Configuring SSL in Node.js
有了certificate以後,就可以把它放在Node.js中使用,
這裡我搭配的express
+https
這二個module,https這個module,default就有了,
所以我們只需要安裝express
就好。
$ npm install --save express
接著就把下面的內容貼入到index.js
當中,
const https = require("https");
const express = require("express");
const fs = require("fs");
const SERVER_CONFIG = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt')
};
var app = express();
app.get('/', function(req,resp) {
resp.status(200).json({"STATUS":"OK"});
});
https.createServer(SERVER_CONFIG, app)
.listen(443,function() { console.log("HTTPS sever started"); }
);
靠fs
去讀取certificate,然後再餵給createServer
,這樣就完成了https server。