总结摘要
本文介绍了 Google 开发的本地 HTTPS 证书生成工具 mkcert,用于简化本地开发环境中的 HTTPS 配置。mkcert 是一个开源工具,支持生成本地可信的开发证书,适用于任何域名。它支持多种操作系统,包括 MacOS、Linux 和 Windows,并提供了简单的安装和使用方法。通过 mkcert -install 命令,用户可以创建并安装本地 CA 证书,随后通过指定域名生成对应的 HTTPS 证书。此外,mkcert 还支持高级参数(如生成 ECDSA 密钥、PKCS#12 文件)和 S/MIME 邮件证书,并可在移动设备上通过安装 rootCA 实现证书信任。
HTTPS目前几乎是一个网站的标配,但是在本地做开发测试时,想使用HTTPS就比较麻烦。
比如最近做的一个项目,因为要使用到QQ开放平台的登录功能,因为平台限制,登录后的回调地址是强校验的,如果申请时填写了HTTPS的地址,而本地使用HTTP,那么就会报错。为了解决这个问题,就想找个工具,能生成本地的HTTPS证书,发现了一个小工具
mkcert
,非常好用。

mkcert地址:
https://github.com/FiloSottile/mkcert
mkcert是由谷歌的Filippo Valsorda使用Golang开发的一个开源工具,使用非常简单,不需要进行任何配置,就可以生成任何你喜欢的域名的本地可信赖的开发证书。
安装
MacOS
Mac上面我们可以使用Homebrew来进行安装:
1
2
| brew install mkcert
brew install nss # 如果你使用Firefox的话
|
或者使用MacPorts:
1
2
3
| sudo port selfupdate
sudo port install mkcert
sudo port install nss # 如果你使用Firefox的话
|
Linux
在Linux上面,首先需要安装certutil
。
1
2
3
4
5
6
7
| sudo apt install libnss3-tools
-or-
sudo yum install nss-tools
-or-
sudo pacman -S nss
-or-
sudo zypper install mozilla-nss-tools
|
然后你可以使用
Linuxbrew
来安装:
你也可以直接从源代码进行编译(依赖Go 1.10+)
1
2
| go get -u github.com/FiloSottile/mkcert
$(go env GOPATH)/bin/mkcert
|
你也可以直接使用编译好的
二进制文件
。
如果你使用的是Arch Linux:
1
2
3
| git clone https://aur.archlinux.org/mkcert.git
cd mkcert
makepkg -si
|
Windows
在Windows上面,你可以使用Chocolatey来进行安装:
你也可以使用Scoop来进行安装:
1
2
| scoop bucket add extras
scoop install mkcert
|
或者直接编译源代码(依赖Go 1.10+),也可以使用提前编译好的
二进制文件
。
使用
首先,我们要创建并安装一个本地的CA证书。
1
2
3
4
5
| $ mkcert -install
Created a new local CA at "/Users/wangjunfeng/Library/Application Support/mkcert" 💥
Password:
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊
|
然后我们就可以直接生成我们自己的证书了,比如我们要生成example.com,*.example.com,example.test,localhost,127.0.0.1,::1这几个地址的证书,那么使用mkcert直接跟上这些地址就可以了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| $ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/wangjunfeng/Library/Application Support/mkcert" ✨
Created a new certificate valid for the following names 📜
- "example.com"
- "*.example.com"
- "example.test"
- "localhost"
- "127.0.0.1"
- "::1"
Reminder: X.509 wildcards only go one level deep, so this won't match a.b.example.com ℹ️
The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
|
剩下的,我们直接在nginx或者其他程序内配置使用这个生成的证书就可以了,真的是太简单,太好用了。
高级使用方法
高级参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| -cert-file FILE, -key-file FILE, -p12-file FILE
Customize the output paths.
-client
Generate a certificate for client authentication.
-ecdsa
Generate a certificate with an ECDSA key.
-pkcs12
Generate a ".p12" PKCS #12 file, also know as a ".pfx" file,
containing certificate and key for legacy applications.
-csr CSR
Generate a certificate based on the supplied CSR. Conflicts with
all other flags and arguments except -install and -cert-file.
|
S/MIME
如果你想要生成一个S/MIME邮件证书,那么直接在生成证书的时候名字写成你的邮箱就可以了。
1
| mkcert filippo@example.com
|
移动设备
如果你想让你的证书在移动设备上面受信任,那么就必须安装rootCA。你可以使用mkcert -CAROOT
来生成一个rootCA.pem
的文件。
在iOS设备上,你可以使用AirDrop、邮件将CA发送给自己,也可以放在http服务器上。安装后,你必须先设置信任该证书。
对于安卓设备,同样你必须安装这个rootCA,并启用它。
其他更多高级用法,可以直接在
Github
上面查看。