node基于自签名证书搭建https服务
原文链接: https://www.cnblogs.com/yalong/p/18232314
描述
基于node.js
搭建一个https
静态资源服务,由于只是本地用,所以使用自签名的ssl
证书就行了
我用的mac 系统,系统自带有openssl的,其他系统如果没有请先安装
使用Openssl生成CA证书
- 生成 root 密钥:
openssl genrsa -out root.key 4096
- 生成 root 证书:
openssl req -new -x509 -days 1000 -key root.key -out root.crt
注意: 输入相关数据,不能全部都空着不写,可以随便写,我这里都写成 aa
也是可以的
- 验证 root 证书:
openssl x509 -text -in root.crt -noout
验证成功,如下图所示:
最终生成两个文件 root.key
root.crt
, 如下图所示:
使用Express搭建Https服务
主要代码如下:
const express = require('express')
const app = require("express")()
const fs = require("fs")
const path = require('path');
// 私钥跟证书
const httpsOption = {
key: fs.readFileSync(path.join(__dirname, './ssl/root.key')),
cert: fs.readFileSync(path.join(__dirname, './ssl/root.crt'))
}
// 创建https
const https = require("https").Server(httpsOption, app)
// 端口
const port = 443
// app.use(express.static(path.join(__dirname, 'public')));
// app.use('/static', express.static('public'))
app.use(express.static('public'));
// 定义根路由
app.get('/', (req, res) => {
res.send("<h1>你好啊,https</h1>")
})
https.listen(port, () => {
console.log(`服务启动成功!`)
console.log(`https://localhost:${port}`)
})
https
服务使用443
端口就不用在url
里写上端口号了,不过启动的时候,要加上sudo
, 我demo
里的启动方式就是 sudo npm run start
打开浏览器访问一个图片如下图所示