1. 工具簡介

mkcert 是由 Filo Sottile 開源創建的一款「零配置」的命令行工具,用於在本地開發環境創建受信任的 HTTPS/TLS 證書。功能概括如下:

  • 自動在本地生成一個根 CA(Certificate Authority)並安裝至平台信任根。
  • 使用該根 CA 為任意主機名/IP/通配域生成簽發證書(public + key)。
  • 目標是簡化本地開發環境(如 localhost、127.0.0.1、*.local.test 等)中 HTTPS 搭建,並避免瀏覽器出現「不安全連接」警告。

一句話:在你本地開發時,只需幾條命令即可擁有瀏覽器信任的 HTTPS 證書,而無需繁瑣配置。

mkcert: 本地使用的 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

brew install mkcert;若用 Firefox 還需 brew install nss

Linux

先安裝 nss 工具(如 libnss3-tools),然後用 brew 或手動下載。

Windows

可用 Chocolatey: choco install mkcert;或 Scoop。

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}

mkcert: 本地使用的 HTTPS 證書_HTTPS_02


5. 常用參數詳解

參數

功能説明

-install

安裝本地 CA 並加入信任根,只需執行一次。

-cert-file FILE, -key-file FILE

指定輸出的證書/私鑰文件路徑。 ([GitHub][1])

-p12-file FILE, -pkcs12

生成 .p12(或 .pfx)格式文件,適用於必須 PKCS#12 格式的應用。 ([GitHub][1])

-ecdsa

使用 ECDSA 算法生成證書,而非默認的 RSA。 ([GitHub][1])

-csr CSR

根據已有 CSR 生成證書,而不是直接指定域名。 ([GitHub][1])

-client

為客户端認證用途生成證書(客户端 TLS 證書)。 ([GitHub][1])

$CAROOT 環境變量

自定義 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 安全,就可以安心使用。