1. 工具簡介
mkcert 是由 Filo Sottile 開源創建的一款「零配置」的命令行工具,用於在本地開發環境創建受信任的 HTTPS/TLS 證書。功能概括如下:
- 自動在本地生成一個根 CA(Certificate Authority)並安裝至平台信任根。
- 使用該根 CA 為任意主機名/IP/通配域生成簽發證書(public + key)。
- 目標是簡化本地開發環境(如 localhost、127.0.0.1、*.local.test 等)中 HTTPS 搭建,並避免瀏覽器出現「不安全連接」警告。
一句話:在你本地開發時,只需幾條命令即可擁有瀏覽器信任的 HTTPS 證書,而無需繁瑣配置。
2. 為什麼需要 HTTPS 和 mkcert?
2.1 為什麼在本地也用 HTTPS?
|
場景
|
問題
|
結果
|
|
開發 SPA/PWA 或使用 Service Worker
|
許多瀏覽器要求「安全上下文(Secure Context)」,即必須 HTTPS 或 localhost 。
|
如果用 HTTP 可能某些功能不能用或瀏覽器限制更多。
|
|
模擬生產環境(生產環境幾乎總用 HTTPS)
|
本地用 HTTP → 上線用 HTTPS,可能有差異/調試偏差。
|
提高研發環境與生產環境的一致性。
|
|
瀏覽器安全策略加強
|
瀏覽器越來越強調「非 HTTPS =不安全」。在本地雖然繞過,但體驗差、影響信任。
|
利用 HTTPS 可消除「不安全」紅標、提升體驗。
|
2.2 傳統方法的問題
- 自簽名證書(自 SSL)雖然能 HTTPS,但瀏覽器通常不信任,會彈出警告。
- 手工管理 CA/證書(如用 openssl、手動導入根證書)流程複雜、易錯、維護麻煩。 因此,引入 mkcert 的初衷:自動化、本地信任、開發者友好。
2.3 mkcert 的優勢
- 零配置啓動(“requires no configuration”)
- 協助多個操作系統(macOS、Windows、Linux)及瀏覽器信任鏈。
- 可生成帶多個域名/IP/通配符的證書,一次搞定。
3. 安裝與環境支持
3.1 支持的平台與信任根
根據官方 README,mkcert 支持將本地 CA 安裝到以下“根信任存儲”中:
- macOS 系統根證書庫
- Windows 環境根證書庫
- Linux 發行版支持 update-ca-certificates(Ubuntu/Debian)、update-ca-trust(RHEL)、trust(Arch)等方式。
- Firefox 專用(macOS + Linux)基於其使用 NSS 證書庫。
- Java (當 JAVA_HOME 設置且需要)。
3.2 安裝方法(概覽)
|
操作系統
|
安裝方法簡述
|
|
macOS
|
|
|
Linux
|
先安裝 nss 工具(如 |
|
Windows
|
可用 Chocolatey: |
3.3 安全提醒
警告:rootCA-key.pem 檔案一旦泄露,任何人都可能偽裝你機器上的 HTTPS 流量。切勿共享 root CA 私鑰。
4. 安裝
# 第一步:安裝本地 CA(只做一次)
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)! :contentReference[oaicite:24]{index=24}
# 第二步:在項目目錄生成證書(指定多個域名/IP)
mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
# 輸出:
# Created a new certificate valid for the following names …
# The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅ :contentReference[oaicite:25]{index=25}
5. 常用參數詳解
|
參數
|
功能説明
|
|
|
安裝本地 CA 並加入信任根,只需執行一次。
|
|
|
指定輸出的證書/私鑰文件路徑。 ([GitHub][1])
|
|
|
生成 .p12(或 .pfx)格式文件,適用於必須 PKCS#12 格式的應用。 ([GitHub][1])
|
|
|
使用 ECDSA 算法生成證書,而非默認的 RSA。 ([GitHub][1])
|
|
|
根據已有 CSR 生成證書,而不是直接指定域名。 ([GitHub][1])
|
|
|
為客户端認證用途生成證書(客户端 TLS 證書)。 ([GitHub][1])
|
|
|
自定義 CA 根證書與私鑰的存儲路徑。 ([GitHub][1])
|
6. 典型使用場景
6.1 本地 Web 開發(靜態站/SPA/後端)
想在 localhost(或自定義 .dev/.test 域名)下使用 HTTPS 調試前端、後端。使用 mkcert 幾乎“開箱即用”。
6.2 微服務/API 創建(包含 HTTPS 、WebSocket)
如你製作的 API 或 WebSocket 後端要求 TLS 連接,使用 mkcert 可為 127.0.0.1、localhost、甚至內部 IP 生成可信證書。
6.3 移動/瀏覽器 調試
在 iOS/Android 或瀏覽器中開發時,也可將根 CA 材料導入設備/瀏覽器以實現真實 HTTPS 環境。
6.4 團隊/CI 環境
團隊合作或 CI/CD 中需要統一 HTTPS 開發環境,可將 mkcert CA 導出到其他機器。
7. 優點與侷限(優缺點)
優點
- 飛快、簡單、幾乎零設置即可生成可信證書。
- 支持多平台、多瀏覽器、Java 信任鏈。
- 支持通配符、多域名、多 IP ,一次搞定。
- 極大提升開發體驗:在本地就能 “綠色鎖” 訪問。
侷限/需要注意的點
- 僅限研發環境:mkcert 所生成的證書不應用於生產環境。項目文檔明確指出該工具為研發使用。
- 根 CA 私鑰需嚴格保護;泄露風險高。
- 某些複雜環境(如瀏覽器外部信任鏈、移動設備、團隊統一 CA 管理)可能仍需額外設置。
8. 常見坑與實用技巧
常見誤區
- 以為「只生成 .pem」就完事了:還需將 .pem 配置到服務器、重啓並確保瀏覽器信任。
- 忽略根 CA 安裝:如果跳過了 mkcert -install,瀏覽器仍然會彈“證書不可信”。
- 團隊協作忽略 CA 導出:若多人制作,建議將根 CA 導出並統一安裝在共同設備。
- Android 信任挑戰:Android 默認不信任用户根證書,可能必須額外開啓 “用户根信任”。
9. 小結
倘若你正在開發本地 Web 項目、API 服務、微服務或前端 SPA ,且希望啓用 HTTPS 避免瀏覽器警告、模擬生產環境、提升開發體驗,那麼 mkcert 幾乎是“必裝利器”。從安裝、生成、配置到啓動測試,整個流程非常清晰。只要注意「僅用於開發環境」和根 CA 安全,就可以安心使用。