mkcert 是一个用于创建本地信任的开发证书的简单工具,无需任何配置。
$ mkcert -install
Created a new local CA 💥
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)! 🦊
$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Created a new certificate valid for the following names 📜
- "example.com"
- "*.example.com"
- "example.test"
- "localhost"
- "127.0.0.1"
- "::1"
The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
使用来自真实证书颁发机构 (CA) 的证书进行开发可能很危险,甚至无法实现(例如,对于像 example.test
、localhost
或 127.0.0.1
这样的主机),但自签名证书会导致信任错误。管理您自己的 CA 是最佳解决方案,但通常需要复杂的命令、专业知识和手动步骤。
mkcert 会自动在系统根存储中创建并安装本地 CA,并生成本地信任的证书。不过,mkcert 不会自动配置服务器以使用这些证书,这取决于您。
警告:mkcert 自动生成的
rootCA-key.pem
文件拥有拦截来自您机器的安全请求的完全权限。请勿共享该文件。
在 macOS 上,请使用 Homebrew
brew install mkcert
brew install nss # if you use Firefox
or MacPorts.
sudo port selfupdate
sudo port install mkcert
sudo port install nss # if you use Firefox
在 Linux 上,首先安装 certutil
.
sudo apt install libnss3-tools
-or-
sudo yum install nss-tools
-or-
sudo pacman -S nss
-or-
sudo zypper install mozilla-nss-tools
然后你就可以在 Linux 上使用 Homebrew进行安装了 Homebrew on Linux
brew install mkcert
或从源代码构建(需要 Go 1.13+)
git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"
或者使用 预先构建的二进制文件.
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
对于 Arch Linux 用户,mkcert
可在 Arch Linux 官方存储库中找到。
sudo pacman -Syu mkcert
在 Windows 上,使用 Chocolatey
choco install mkcert
或使用 Scoop
scoop bucket add extras
scoop install mkcert
或从源代码构建(需要 Go 1.10 及以上版本),或使用预编译的二进制文件。
如果您遇到权限问题,请尝试以管理员身份运行 mkcert
。
mkcert 支持以下根证书存储:
update-ca-trust
(Fedora、RHEL、CentOS)或update-ca-certificates
(Ubuntu、Debian、OpenSUSE、SLES)或trust
(Arch)JAVA_HOME
时)如果要仅将本地根 CA 安装到其中的一部分,您可以将 TRUST_STORES
环境变量设置为以逗号分隔的列表。选项包括:“system”、“java”和“nss”(包括 Firefox)。
-cert-file FILE, -key-file FILE, -p12-file FILE
自定义输出路径。
-client
生成用于客户端身份验证的证书。
-ecdsa
使用 ECDSA 密钥生成证书。
-pkcs12
生成一个“.p12”格式的 PKCS #12 文件,也称为“.pfx”文件,
其中包含用于旧版应用程序的证书和密钥。
-csr CSR
根据提供的 CSR 生成证书。与除 -install 和 -cert-file 之外的所有其他标志和参数冲突。
注意:您必须将这些选项放在域名列表之前。
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
如果提供的名称之一是电子邮件地址,mkcert 将自动生成 S/MIME 证书。
mkcert filippo@example.com
要使证书在移动设备上受信任,您必须安装根 CA。它是 mkcert -CAROOT
打印的文件夹中的 rootCA.pem
文件。
在 iOS 上,您可以使用 AirDrop、将 CA 通过电子邮件发送给自己,或通过 HTTP 服务器提供。打开后,您需要在“设置”>“已下载的配置文件”中安装配置文件,然后启用对其的完全信任。
对于 Android,您必须安装 CA,然后在应用的开发版本中启用用户 root 权限。请参阅此 StackOverflow 答案。
Node 不使用系统 root 存储,因此它不会自动接受 mkcert 证书。您需要设置 NODE_EXTRA_CA_CERTS
环境变量。
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
CA 证书及其密钥存储在用户主目录下的应用程序数据文件夹中。通常您无需担心,因为安装是自动进行的,但 mkcert -CAROOT
会打印其位置。
如果您想管理单独的 CA,可以使用环境变量 $CAROOT
来设置 mkcert 放置和查找本地 CA 文件的文件夹。
在信任库中安装不需要 CA 密钥,因此您可以导出 CA 证书并使用 mkcert 将其安装在其他计算机上。
请记住,mkcert 用于开发目的,而非生产环境,因此不应在最终用户的机器上使用,并且您不应导出或共享“rootCA-key.pem”。