介绍
mkcert
是一个用于创建本地受信任的 SSL/TLS
证书的简单工具,特别适合开发者在本地环境中使用。它解决了为开发和测试目的创建自签名证书时遇到的信任问题。以下是关于 mkcert
的详细介绍:
特点
- 易用性:只需一条命令即可生成证书,并自动安装到系统的根证书存储中。
- 跨平台支持:支持Windows、macOS和Linux等操作系统。
- 多域名支持:可以为多个域名(包括通配符域名)创建证书。
- 自动管理:能够自动处理证书的安装和移除,简化了证书管理流程。
官方地址:https://github.com/FiloSottile/mkcert
使用
如下一张图就把使用 mkcert
创建和使用证书讲清楚了:
注意:必须要使用管理员模式操作,否则执行命令时会出现相关目录不可以操作等权限问题。
分发根证书
将根证书分发给其他用户,手工导入操作系统后,目标用户通过浏览器访问 mkcert 基于同一个根证书签发的所有证书,就不再会有浏览器红色警告了。
分发扩展名处理:
将 rootCA.pem
拷贝一个副本,并命名为 rootCA.crt
(因为 windows 并不识别pem扩展名,并且 Ubuntu 也不会将pem扩展名作为 CA 证书文件对待),将rootCA.crt
文件分发给其他用户,手工导入。
如果根证书已经分发给很多用户(比如公司内部所有同事),
请妥善保管根证书
,否则以后重新生成根证书再签发的证书又是不可信了(信任的前提是基于同一个根证书签发的所有证书)。
上文是 Windows 下的操作,如果你是 Linux 和 MacOS,详见官网操作步骤。
如果你希望自定义 Organization
、OrganizationalUnit
、CommonName
,请通过修改源代码 cert.go
文件并重新编译程序实现。
rootCA
默认有效期10年
,后续签发的证书默认有效期2年3个月
。如果需要修改时长,也是修改 cert.go
文件后重新编译。
原理
整体原理图如下,仅供参考:
根证书安装后,可以通过证书管理界面看到我们的证书,如下图所示:
在 Linux 上安装根证书
Linux 系统如果要正常访问自签发 https 证书不警告,同理需要安装根证书(不是创建证书)。
根据操作系统的不同,将转换后的证书放到不同的证书目录,然后执行对应的更新命令,如下:
Centos:
cp ca.crt /etc/pki/ca-trust/source/anchors;update-ca-trust
Ubuntu:
sudo cp ca.crt /usr/local/share/ca-certificates;sudo update-ca-certificates
Alpine:
cp ca.crt /usr/local/share/ca-certificates;sudo update-ca-certificates
(END)