node 创建本地 https 服务

node自带了https模块,跟http模块的使用类似,不过在创建服务时使用CA证书。

mkcert

mkcert 是一个简单的工具,用于制作本地信任的开发证书。它不需要配置。在项目中安装后就可以直接使用。

npm i mkcert -D

这个库非常简单,只有两个指令

  • create-ca: 创建证书颁发机构
  • create-cert: 创建证书(需要先根据 create-ca 命令创建的文件才能创建)

上面两个指令都设置有默认的配置,可以直接运行生成证书。

npx mkcert create-ca
npx mkcert create-cert

此时根目录下会生成 4 个文件
-ca.crt
-ca.key
-cert.crt
-cert.key

此时密钥是cert.key文件,证书是cert.crt文件。

此时便可以根据生成的文件来启动https

使用 https 模块

const https = require("https");
const fs = require("fs");
const options = {
  // 私钥
  key: fs.readFileSync(__dirname + "/cert.key"),
  // 由私钥生成的证书
  cert: fs.readFileSync(__dirname + "/cert.crt"),
};

const app = https.createServer(options, (req, res) => {
  res.end("https server");
});
app.listen(8080);

使用 express 创建服务

const https = require("https");
const express = require("express");
const fs = require("fs");
const options = {
  // 私钥
  key: fs.readFileSync(__dirname + "/ca/cert.key"),
  // 由私钥生成的证书
  cert: fs.readFileSync(__dirname + "/ca/cert.crt"),
};

const app = express();
app.get("*", (req, res) => {
  res.send("https server");
});
// ...
https.createServer(options, app).listen(8080);
12-08 09:02