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
或 MacPort。
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进行安装
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 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
(拱门)
Firefox(仅限 macOS 和 Linux)
铬和铬
Java(当设置JAVA_HOME
时)
要仅将本地根 CA 安装到其中的子集中,您可以将TRUST_STORES
环境变量设置为逗号分隔的列表。选项有:“system”、“java”和“nss”(包括 Firefox)。
-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.
注意:您必须将这些选项放在域名列表之前。
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
如果提供的名称之一是电子邮件地址,mkcert 会自动生成 S/MIME 证书。
mkcert [email protected]
为了使证书在移动设备上受信任,您必须安装根 CA。它是mkcert -CAROOT
打印的文件夹中的rootCA.pem
文件。
在 iOS 上,您可以使用 AirDrop、通过电子邮件将 CA 发送给自己,或者从 HTTP 服务器提供该 CA。打开后,您需要在“设置”>“下载的配置文件”中安装配置文件,然后启用对其的完全信任。
对于 Android,您必须安装 CA,然后在应用程序的开发版本中启用用户 root。请参阅此 StackOverflow 答案。
Node 不使用系统根存储,因此它不会自动接受 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 -CAROOT
中查找rootCA.pem
文件
将其复制到另一台机器上
将$CAROOT
设置为其目录
运行mkcert -install
请记住, mkcert 用于开发目的,而不是生产目的,因此不应在最终用户的计算机上使用它,并且您不应导出或共享rootCA-key.pem
。