名称 | 最后提交 | 最后更新 |
---|
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" ✅
使用来自真实证书颁发机构的证书进行开发可能是危险的或不可能的(对于 example.test
、localhost
或 127.0.0.1
之类的主机),但是自签名的证书会导致信任错误。管理你自己的 CA 是最好的解决方案,但通常涉及晦涩的命令、专门的知识和手动步骤。
mkcert 在系统根存储中自动创建和安装本地 CA,并生成本地受信任的证书。 mkcert 不会自动将服务器配置为使用证书,不过,这取决于你。
安装
警告: mkcert 自动生成的
rootCA-key.pem
文件提供了截获来自计算机的安全请求的完整功能。不要分享它。
macOS
在 macOS 上,使用 自制啤酒
brew install mkcert
brew install nss # if you use Firefox
或 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 上的自制程序 安装
brew install mkcert
或者从源代码构建(需要 Go1.13+)
git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"
或使用 预先构建的二进制文件。
对于 Arch Linux 用户,mkcert
在官方的 Arch Linux 上可用库。
sudo pacman -Syu mkcert
视窗
在 Windows 上,使用 巧克力
choco install mkcert
或使用 Scoop
scoop bucket add extras
scoop install mkcert
或者从源代码构建(需要 Go1.10+),或者使用 预先构建的二进制文件。
如果遇到权限问题,请尝试以管理员的身份运行 mkcert
。
支持的根存储
mkcert 支持以下根存储:
- macOS 系统商店
- Windows 系统商店
- Linux 变体提供了
-
update-ca-trust
(Fedora,RHEL,Centos)或 -
update-ca-certificates
(Ubuntu、Debian、openSUSE、SLES)或 trust
-
- Firefox(仅限于 macOS 和 Linux)
- Chrome 和铬
- Java(设置
JAVA_HOME
时)
要仅将本地根 CA 安装到它们的一个子集中,你可以将 TRUST_STORES
环境变量设置为逗号分隔的列表。选项包括:“系统”、“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
s/ 哑剧
mkcert 如果提供的名称之一是电子邮件地址,则自动生成 S/MIME 证书。
mkcert filippo@example.com
移动设备
要使证书在移动设备上受到信任,你必须安装根 CA。这是 rootCA.pem
文件夹中的 mkcert -CAROOT
文件。
在 iOS 系统上,你可以使用 AirDrop,也可以通过电子邮件将 CA 发送给自己,或者从 HTTP 服务器提供服务。打开后,需要 install the profile in Settings > Profile Downloaded,然后 启用对 IT 的完全信任。
对于 Android,你必须安装 CA,然后在应用程序的开发构建中启用用户根。见 这个 StackOverflow 答案。
在 node.js 中使用 root
Node 不使用系统根存储,因此它不会自动接受 mkcert 证书。相反,你必须设置 节点 extracerts 环境变量。
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
。