在前端开发过程中,我们总会遇到需要创建证书来启用 HTTPS 的场景。但是,创建证书的过程通常很繁琐,需要通过 OpenSSL 生成自签名证书或者购买经过验证的商业证书。这些过程都需要花费一定的时间和精力,在我们专注于业务开发的时候,变得非常麻烦。
好在有一个 npm 包 node-easy-cert 可以帮助我们轻松创建自签名证书,从而省去了繁琐的操作。接下来,我们就来详细介绍一下这个 npm 包的使用方法。
node-easy-cert 是什么?
node-easy-cert 是一个基于 Node.js 的 npm 包,专门用于生成自签名证书。通过使用 node-easy-cert,我们可以快捷地创建自签名证书,从而实现在本地起一个 HTTPS 服务的目的。
node-easy-cert 的主要功能包括:
- 生成自签名证书
- 读取和删除自签名证书
- 使 Express 应用支持 HTTPS
安装 node-easy-cert
首先,我们需要全局安装 node-easy-cert:
npm install -g node-easy-cert
之后,你可以通过简单的命令行命令来运行 node-easy-cert。
生成自签名证书
下面是生成自签名证书的命令:
sudo easy-cert-cli create
运行这个命令会让你输入几个参数。如果你不想手动输入,也可以加上 --silent
参数。参数说明如下:
bits
:生成的 RSA 私钥的比特数,默认为2048
。days
:证书的有效期,单位为天。默认为365
天。commonName
:证书颁发机构的名称。默认为localhost
。
当你运行了这个命令后,node-easy-cert 会在当前工作目录中生成 ca.crt
和 ca.key
文件。这是根证书的私钥和公钥,用于签名证书请求。
接下来,node-easy-cert 会让你输入域名和 IP。如果你想使用 HTTP 服务,请输入 localhost
和 127.0.0.1
。如果你想使用 HTTPS 服务,请输入你的域名和 IP 地址。当你输入完这些信息后,node-easy-cert 会生成 server.crt
和 server.key
。
使用自签名证书
现在,我们已经生成了自签名证书。接下来,我们需要在我们的应用程序中使用这些证书。
Express
如果你正在使用 Express,可以通过以下方法实现 HTTPS 的支持。
首先,在你的 Express 应用程序中导入 https
模块:
const https = require('https');
之后,读取生成的证书:
const fs = require('fs'); const path = require('path'); const certOptions = { key: fs.readFileSync(path.join(__dirname, 'server.key')), cert: fs.readFileSync(path.join(__dirname, 'server.crt')) };
最后,把证书作为参数传入 https.createServer
:
https.createServer(certOptions, app).listen(httpsPort, () => { console.log(`HTTPS server is listening on ${httpsPort}!`); });
Koa
如果你正在使用 Koa,可以通过以下方法实现 HTTPS 的支持。
首先,安装 koa-sslify
:
npm i koa-sslify
之后,导入 koa-sslify
并启用它:
const Koa = require('koa'); const sslify = require('koa-sslify').default; const app = new Koa(); app.use(sslify());
完成上述步骤之后,你的应用程序就支持 HTTPS 了。
删除自签名证书
如果你需要删除生成的自签名证书,可以使用以下命令:
sudo easy-cert-cli reset
运行该命令会删除之前生成的证书,包括根证书、服务器证书等。
总结
通过 node-easy-cert,我们可以轻松地创建自签名证书,实现在本地启用 HTTPS 服务的目的。在实际的开发中,HTTPS 才是一种更安全的网络通信方式,这样我们才能确保数据的安全。如果你正在进行前端开发,强烈建议你使用 node-easy-cert,这将是一个很好的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60825