技术分享

局域网SSL简单解决方案——mkcert

liaoya · 3月19日 · 2021年 · · · · · 3467次已读

前言

在局域网使用中,经常需要使用到HTTPS环境,为了解决浏览器信任问题,我们需要使用自制的CA证书来实现。

mkcert介绍

mkcert是谷歌密码学家Filippo Valsorda完成的开源项目,该项目允许开发者在本地部署HTTPS测试环境。mkcert 是一个简单、零配置的工具,可以使用您想要的任何名称创建本地可信的开发证书的小程序。
下载地址:
https://github.com/FiloSottile/mkcert/releases
https://gitee.com/mirrors/mkcert

这里我们下载WINDOWS版本

mkcert基本使用

直接使用mkcert-v1.4.3-windows-amd64.exe -install安装CA证书
可以在当前用户受信任的根证书颁发机构里面找到
使用非常简单如:mkcert-v1.4.3-windows-amd64.exe 192.168.1.1 就可以生成IP证书。得到两个证书文件

如果需要服务器无法识别pem文件,可以将192.168.1.1.pem文件修改为:192.168.1.1.crt就可导入了。也可以通过OPENSSL将PEM和KEY文件合并为:pfx文件导入。

服务器导入证书后,我们需要授信客户端证书。使用命令:mkcert-v1.4.3-windows-amd64.exe -CAROOT 定位CA证书位置

找到根证书,将 rootCA.pem 拷贝一个副本,并命名为 rootCA.crt (因为windows并不识别 pem 扩展名,并且Ubuntu也不会将 pem 扩展名作为CA证书文件对待),将 rootCA.crt 文件分发给其他用户,手工导入。

这样,证书就可以正常使用了。

高级用法

我们可以使用打开 mkcert-v1.4.3-windows-amd64.exe –help 查看帮助,会发现很多高级用法。

比如 -cert-file FILE, -key-file FILE, -p12-file FILE 可以定义输出的证书文件名。

-client 可以产生客户端认证证书,用于SSL双向认证。之前的文章介绍过使用openssl脚本的(Nginx SSL快速双向认证配置 3),可以对比下。

-pkcs12 命令可以产生 PKCS12 格式的证书。java程序通常不支持 PEM 格式的证书,但是支持 PKCS12 格式的证书。通过这个程序我们可以很方便的产生 PKCS12 格式的证书直接给Java程序使用。

mkcert 127.0.0.1 localhost //后面还可以继续空格添加其他域名或IP地址,默认是pem格式
mkcert -pkcs12 192.168.10.123 //生成p12格式的正式iis可以用,默认密码为:“changeit”
mkcert -client 192.168.10.123 //客户端证书,默认是pem格式
mkcert -pkcs12 -client 192.168.10.123 //生成p12格式客户端证书,win用户可以直接导入,默认密码为:“changeit”

0 条回应