在某些开发场景下,项目必须使用https才能进行使用,比如音视频,webtrc等需要调用chrome的麦克风和摄像头,浏览器为了安全起见就必须要求是https才允许调用。然而,在本地开发环境中配置 HTTPS 可能会比较麻烦。幸运的是,mkcert 是一个简单易用的工具,可以帮助我们快速生成自签名证书。本文将介绍如何使用 mkcert 生成自签名证书,并在内网环境或者本地开发环境中使用它们。

什么是 mkcert?

mkcert 是一个简单的工具,可以快速生成受信任的自签名证书。它会自动创建一个本地 CA(证书颁发机构),并将其安装到系统信任的证书列表中。这样生成的证书在本地环境中可以被浏览器信任,避免了常见的安全警告。

开源项目地址:https://github.com/FiloSottile/mkcert

具体怎么安装请参考github官方文档,提供各大平台使用的方式,由于针对有一定经验并且有相关使用场景的运维和开发人员使用,不对简单的安装进行具体保姆级教程。

使用mkcert

直接使用命令生成mkcert生成任何证书,包括localhost、IP地址,127.0.0.1,泛域名证书等。

在此以windows为例:

.\mkcert-v1.4.4-windows-amd64.exe *.lab.dev *.router.com *.dev.com localhost 192.168.1.100

然后会在同目录生成两个文件:_wildcard.lab.dev+4.pem_wildcard.lab.dev+4-key.pem

查看根证书路径:本地信任需要安装根证书

.\mkcert-v1.4.4-windows-amd64.exe -CAROOT

nginx配置使用

直接通过nginx配置这个证书即可。

参考配置:

server {
       listen       443 ssl; 
       server_name  localhost; 

       ssl_certificate     /etc/nginx/ssl/_wildcard.lab.dev+4.pem; 
       ssl_certificate_key  /etc/nginx/ssl/_wildcard.lab.dev+4-key.pem; 

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   html;
           index  index.html index.htm;
       }
    }

配置完成之后通过https访问还是会提示不安全,需要客户端安装上面所说的根证书之后才能信任。

查看根证书路径,该目录中有两个文件:rootCA-key.pemrootCA.pem。将 rootCA.pem 复制到 PC 上,并将其后缀改为 .crt,然后点击安装,选择安装到受信任的根证书目录下。

再次访问则显示安全了。

参考

mkcert 使用指南:如何快速创建自签名 SSL 证书

mkcert生成自签名证书

【密码学】使用mkcert安装CA、自签名ssl证书,配置nginx的https 证书笔记

mkcert的安装和使用,5分学会在本地开启localhost的https访问方式

mkcert生成ssl证书+nginx部署局域网内的https服务访问问题

文章目录