mkcert用于创建本地信任的开发证书的工具

mkcert

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" ✅

Chrome and Firefox screenshot

使用来自真实证书颁发机构 (CA) 的证书进行开发可能很危险,甚至无法实现(例如,对于像 example.testlocalhost127.0.0.1 这样的主机),但自签名证书会导致信任错误。管理您自己的 CA 是最佳解决方案,但通常需要复杂的命令、专业知识和手动步骤。

mkcert 会自动在系统根存储中创建并安装本地 CA,并生成本地信任的证书。不过,mkcert 不会自动配置服务器以使用这些证书,这取决于您。

安装

警告:mkcert 自动生成的 rootCA-key.pem 文件拥有拦截来自您机器的安全请求的完全权限。请勿共享该文件。

macOS

在 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

在 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

在 Windows 上,使用 Chocolatey

复制代码
choco install mkcert

或使用 Scoop

复制代码
scoop bucket add extras
scoop install mkcert

或从源代码构建(需要 Go 1.10 及以上版本),或使用预编译的二进制文件

如果您遇到权限问题,请尝试以管理员身份运行 mkcert

支持的根证书存储

mkcert 支持以下根证书存储:

  • macOS 系统存储
  • Windows 系统存储
  • 提供以下任一服务的 Linux 版本:
  • update-ca-trust(Fedora、RHEL、CentOS)或
  • update-ca-certificates(Ubuntu、Debian、OpenSUSE、SLES)或
  • trust(Arch)
  • Firefox(仅限 macOS 和 Linux)
  • Chrome 和 Chromium
  • Java(设置 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

S/MIME

如果提供的名称之一是电子邮件地址,mkcert 将自动生成 S/MIME 证书。

复制代码
mkcert filippo@example.com

移动设备

要使证书在移动设备上受信任,您必须安装根 CA。它是 mkcert -CAROOT 打印的文件夹中的 rootCA.pem 文件。

在 iOS 上,您可以使用 AirDrop、将 CA 通过电子邮件发送给自己,或通过 HTTP 服务器提供。打开后,您需要在“设置”>“已下载的配置文件”中安装配置文件,然后启用对其的完全信任

对于 Android,您必须安装 CA,然后在应用的开发版本中启用用户 root 权限。请参阅此 StackOverflow 答案

在 Node.js 中使用 root 权限

Node 不使用系统 root 存储,因此它不会自动接受 mkcert 证书。您需要设置 NODE_EXTRA_CA_CERTS 环境变量。

复制代码
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"

更改 CA 文件的位置

CA 证书及其密钥存储在用户主目录下的应用程序数据文件夹中。通常您无需担心,因为安装是自动进行的,但 mkcert -CAROOT 会打印其位置。

如果您想管理单独的 CA,可以使用环境变量 $CAROOT 来设置 mkcert 放置和查找本地 CA 文件的文件夹。

在其他系统上安装 CA

在信任库中安装不需要 CA 密钥,因此您可以导出 CA 证书并使用 mkcert 将其安装在其他计算机上。

  • 在“mkcert -CAROOT”中查找“rootCA.pem”文件
  • 将其复制到其他机器
  • 将“$CAROOT”设置为其目录
  • 运行“mkcert -install”

请记住,mkcert 用于开发目的,而非生产环境,因此不应在最终用户的机器上使用,并且您不应导出或共享“rootCA-key.pem”。

关于项目

mkcert 是一个用于创建本地信任的开发证书的简单工具,无需任何配置。mkcert 会自动在系统根存储中创建并安装本地 CA,并生成本地信任的证书。
BSD-3-Clause
Golang
56,796
2989
490
2018-06-25
2024-08-13

增长趋势 - stars