开发用的 SSL 体系
越来越多的前端应用和功能(客户端安全方面的),需要 HTTPS 的支持,但开发环境通常没有本地 PKI 体系。虽然可以使用 OpenSSL 来创建自签名证书,但过程和操作比较复杂。可以考虑使用 mkCert 软件,来简化操作,其可以帮助你可以创建想要使用的 SSL 证书和 Key,部署在 Nginx 或 Fastify 等系统中,支持开发中的使用。
安装 Mkcert
项目地址在:https://github.com/FiloSottile/mkcert
以 debian 为例,下面的命令可以安装依赖,下载对应的可执行文件版本,并移动到系统目录,作为命令工具可以使用
sudo apt-get update
sudo apt install wget libnss3-tools
export VER="v1.4.1" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/ ${VER}/mkcert-${VER}-linux-amd64
chmod +x mkcert
sudo mv mkcert /usr/local/bin
生成证书
需要注意是,在实际使用中,需要在客户端环境中,预先安装和配置 mkcert 的根证书,否则在使用时,会提示无效证书,因为此证书没有可信任的根证书。
下面的命令可以生成根证书和通配符证书(*.ulsc.local)
mkcert -install
mkcert *.ulsc.local
其中,站点证书在当前目录下(key.pem 和 pem), _wildcard.ulsc.local-key.pem 和 _wildcard.ulsc.local.pem。
根证书在 "/root/.local/share/mkcert" 目录下,有两个文件 rootCA-key.pem rootCA.pem。将 rootCA.pem 复制出来准备导入根证书
导入根证书
以 Windows 为例, win+R,运行 certmgr.msc, 弹出证书管理程序。
右键点击“受信任的证书颁发机构”-“证书”-“所有任务”-“导入”,启动导入向导,选择所有类型文件,选择 rootCA.pem,导入此证书到系统中。
设置站点证书
以 fastify 为例,证书的配置方式如下(证书文件和 Key 都已经复制到 project/cert 目录下),我们建议将此配置信息使用环境变量传入。
// .env 文件:
CERT=./cert/_wildcard.ulsc.local
// index.js
const app = require('fastify')({
logger: true ,
maxParamLength : 500,
https : {
key: fs.readFileSync(API_CFG.cert+'.key'),
cert: fs.readFileSync(API_CFG.cert+'.pem')
}
});
// 其他代码
客户端配置
需要注意的是,对于开发证书,没有有效的 DNS 系统支撑,通常需要通过修改 hosts 文件,手动设置主机名称和 IP 地址的对应关系。
windows 系统中 hosts 文件的位置在 \Windows\System32\drivers\etc 目录下。编辑并增加类似下面的内容
192.168.56.1 dev.ulsc.local
然后,就可以通过访问
类似的方式来访问应用了,需要注意相关的 SSL 配置没有问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论