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" ✅
使用來自真實憑證授權單位 (CA) 的憑證進行開發可能是危險的或不可能的(對於example.test
、 localhost
或127.0.0.1
等主機),但自簽章憑證會導致信任錯誤。管理您自己的 CA 是最好的解決方案,但通常涉及晦澀的命令、專業知識和手動步驟。
mkcert 會自動在系統根儲存中建立並安裝本機 CA,並產生本機信任的憑證。 mkcert 不會自動將伺服器配置為使用證書,但這取決於您。
警告:mkcert 自動產生的
rootCA-key.pem
檔案提供了攔截來自您電腦的安全請求的完全能力。不要分享它。
在 macOS 上,使用 Homebrew
brew install mkcert brew install nss # if you use Firefox
或 MacPort。
sudo port selfupdate sudo port install mkcert sudo port install nss # if you use Firefox
在 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進行安裝
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
可在官方 Arch Linux 儲存庫中找到。
sudo pacman -Syu mkcert
在 Windows 上,使用 Chocolatey
choco install mkcert
或使用湯匙
scoop bucket add extras scoop install mkcert
或從原始碼建置(需要 Go 1.10+),或使用預先建置的二進位檔案。
如果您遇到權限問題,請嘗試以管理員身分執行mkcert
。
mkcert 支援以下根儲存:
macOS 系統商店
Windows系統商店
Linux 變體提供以下任一功能
update-ca-trust
(Fedora、RHEL、CentOS)或
update-ca-certificates
(Ubuntu、Debian、OpenSUSE、SLES)或
trust
(拱門)
Firefox(僅限 macOS 和 Linux)
鉻和鉻
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
如果提供的名稱之一是電子郵件地址,mkcert 會自動產生 S/MIME 憑證。
mkcert [email protected]
為了使憑證在行動裝置上受信任,您必須安裝根 CA。它是mkcert -CAROOT
列印的資料夾中的rootCA.pem
檔案。
在 iOS 上,您可以使用 AirDrop、透過電子郵件將 CA 傳送給自己,或從 HTTP 伺服器提供該 CA。打開後,您需要在「設定」>「下載的設定檔」中安裝設定文件,然後啟用對其的完全信任。
對於 Android,您必須安裝 CA,然後在應用程式的開發版本中啟用使用者 root。請參閱此 StackOverflow 答案。
Node 不使用系統根存儲,因此它不會自動接受 mkcert 憑證。相反,您必須設定NODE_EXTRA_CA_CERTS
環境變數。
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
CA 憑證及其金鑰儲存在使用者主目錄中的應用程式資料資料夾中。您通常不必擔心它,因為安裝是自動化的,但位置是由mkcert -CAROOT
列印的。
如果您想管理單獨的 CA,可以使用環境變數$CAROOT
來設定 mkcert 將放置的資料夾並尋找本機 CA 檔案。
在信任儲存中安裝不需要 CA 金鑰,因此您可以匯出 CA 憑證並使用 mkcert 將其安裝在其他電腦上。
在mkcert -CAROOT
中尋找rootCA.pem
文件
將其複製到另一台機器上
將$CAROOT
設定為其目錄
運行mkcert -install
請記住, mkcert 用於開發目的,而不是生產目的,因此不應在最終用戶的電腦上使用它,並且您不應導出或共享rootCA-key.pem
。