FiloSottile/mkcert
GitHub: FiloSottile/mkcert
一款零配置的本地 HTTPS 开发证书生成工具,通过自动创建并安装本地 CA,彻底解决了自签名证书导致的浏览器信任警告问题。
Stars: 58399 | Forks: 3055
# 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" ✅
```
)。
```
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`](https://archlinux.org/packages/extra/x86_64/mkcert/) 可在 Arch Linux 官方仓库中找到。
```
sudo pacman -Syu mkcert
```
### Windows
在 Windows 上,使用 [Chocolatey](https://chocolatey.org)
```
choco install mkcert
```
或者使用 Scoop
```
scoop bucket add extras
scoop install mkcert
```
或者从源码构建(需要 Go 1.10+),或者使用[预构建的二进制文件](https://github.com/FiloSottile/mkcert/releases)。
如果你遇到权限问题,请尝试以管理员身份运行 `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
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/MIME
如果提供的名称中有一个是电子邮件地址,mkcert 会自动生成一个 S/MIME 证书。
```
mkcert filippo@example.com
```
### 移动设备
为了使证书在移动设备上受到信任,你必须安装根 CA。它就是 `mkcert -CAROOT` 打印的文件夹中的 `rootCA.pem` 文件。
在 iOS 上,你可以使用 AirDrop,通过电子邮件将 CA 发送给自己,或者通过 HTTP 服务器提供它。打开它之后,你需要[在“设置 > 已下载的描述文件”中安装描述文件](https://github.com/FiloSottile/mkcert/issues/233#issuecomment-690110809),然后[对其启用完全信任](https://support.apple.com/en-nz/HT204477)。
对于 Android,你必须安装 CA,然后在应用的开发版本中启用用户根证书。请参阅[这个 StackOverflow 回答](https://stackoverflow.com/a/22040887/749014)。
### 在 Node.js 中使用根证书
Node 不使用系统根存储,因此它不会自动接受 mkcert 证书。相反,你必须设置 [`NODE_EXTRA_CA_CERTS`](https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file) 环境变量。
```
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`。

标签:CA证书, HTTPS, meg, mkcert, SamuraiWTF, SOC Prime, SSL/TLS, Syscall, Web开发, 信息安全, 公钥基础设施, 内核驱动, 加密, 后端开发, 开发工具, 开发环境, 日志审计, 本地主机, 本地证书, 漏洞扫描器, 网络协议, 网络安全, 自签名证书, 证书颁发机构, 隐私保护, 零配置