前言
在局域网使用中,经常需要使用到HTTPS环境,为了解决浏览器信任问题,我们需要使用自制的CA证书来实现。
mkcert介绍
mkcert是谷歌密码学家Filippo Valsorda完成的开源项目,该项目允许开发者在本地部署HTTPS测试环境。mkcert 是一个简单、零配置的工具,可以使用您想要的任何名称创建本地可信的开发证书的小程序。
下载地址:
https://github.com/FiloSottile/mkcert/releases
https://gitee.com/mirrors/mkcert
mkcert基本使用
如果需要服务器无法识别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”