开发用的 SSL 体系

发布于 2024-06-10 21:23:37 字数 2187 浏览 17 评论 0

越来越多的前端应用和功能(客户端安全方面的),需要 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

然后,就可以通过访问

https://dev.ulsc.local:3000

类似的方式来访问应用了,需要注意相关的 SSL 配置没有问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

∞觅青森が

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文