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

Chrome and Firefox screenshot

使用来自真实证书颁发机构 (CA) 的证书进行开发可能是危险甚至不可能的(例如对于 `example.test`、`localhost` 或 `127.0.0.1` 这样的主机),但自签名证书会导致信任错误。管理您自己的 CA 是最好的解决方案,但这通常涉及晦涩的命令、专业知识和手动操作。 mkcert 会自动在系统根存储中创建并安装本地 CA,然后生成本地受信任的证书。不过,mkcert 不会自动配置服务器去使用这些证书,这取决于您自己。 ## 安装 ### macOS 在 macOS 上,使用 [Homebrew](https://brew.sh/) ``` brew install mkcert brew install nss # if you use Firefox ``` 或者 [MacPorts](https://www.macports.org/)。 ``` 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](https://docs.brew.sh/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`](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开发, 信息安全, 公钥基础设施, 内核驱动, 加密, 后端开发, 开发工具, 开发环境, 日志审计, 本地主机, 本地证书, 漏洞扫描器, 网络协议, 网络安全, 自签名证书, 证书颁发机构, 隐私保护, 零配置