mkcert – 讓你在 Localhost 與 IP 環境中也能安裝 SSL 證書,啟用 HTTPS 協議

mkcert 教學整理在 localhost 與內部 IP 環境建立本機 SSL 憑證、啟用 HTTPS、安裝流程與常見注意事項。

用 AI 摘要這篇文章:

mkcert 是一套免費開源的本機 SSL 憑證工具,只要一行指令就能讓 localhost 和 IP 位址的 HTTPS 環境被瀏覽器直接信任,完全不需要手動處理憑證匯入。

mkcert 是什麼?為什麼本機開發需要 HTTPS?

mkcert 是由 Google 安全工程師 Filippo Valsorda 在 2018 年開源的工具(BSD 3-Clause 授權),目的只有一個:讓本機開發環境的 HTTPS 設定變得零門檻。截至 2026 年 5 月,最新穩定版為 v1.4.4

很多開發者覺得本機測試用 HTTP 就夠了,但實際情況是:Chrome 已經封鎖 HTTP 頁面上對 Service Worker、Geolocation、Clipboard API 等超過二十種瀏覽器功能的存取。如果你全程用 HTTP 開發,等到部署到正式的 Bluehost 主機Kinsta 託管環境後切換 HTTPS,就會遇到 Mixed Content 問題,瀏覽器主動擋掉還在用 HTTP 載入的資源。這類問題在大型專案裡散落各地,逐一排查相當耗時。

問題在於,Let’s Encrypt 不會為 localhost 或 IP 位址簽發憑證,因為這些目標無法通過 HTTP-01 或 DNS-01 的驗證流程。傳統做法是用 OpenSSL 產生自簽憑證,但瀏覽器永遠會跳出「您的連線不是私人連線」的紅色警告,因為自簽憑證的 Root CA 不在系統信任清單中。

mkcert 解決的正是這個信任問題。它在你的電腦上建立一個本地憑證機構(Local CA),自動把 Root CA 安裝到系統的信任清單裡,包含 macOS Keychain、Windows Certificate Store、Linux 的 ca-certificates,以及 Firefox 專用的 NSS 資料庫。之後用 mkcert 產生的所有 SSL 憑證,都會被瀏覽器直接信任,完全零警告。

整個流程不需要連到任何外部伺服器,CA 私鑰完全存在於本機。mkcert 處理的是開發便利性,跟 Sucuri SiteCheck 網站安全掃描Cloudflare CDN 保護正式環境是不同層面的事情。

SSL 憑證方案比較:mkcert vs Let’s Encrypt vs 自簽憑證

三種方案的定位差異很明確,下表直接對照:

比較項目 mkcert Let’s Encrypt OpenSSL 自簽憑證
適用場景 本機開發、測試環境 正式環境、公開網站 測試、內部系統
瀏覽器信任 自動受信任(安裝 CA 後) 全球受信任 不信任,會跳警告
支援 localhost 是(但不被信任)
支援 IP 位址 是(但不被信任)
需要網域 是(參考購買網域教學
費用 免費 免費 免費
憑證有效期 預設 2 年又 3 個月 90 天(自動續約) 自訂
設定難度 極低,一行指令 中等,需設定驗證 較高,需手動處理
正式環境可用 不建議

從表格可以清楚看到:mkcert 在本機開發場景下幾乎完勝。它不需要你有自己的網域,不需要虛擬主機提供驗證,也不會讓瀏覽器跳安全性警告。Let’s Encrypt 雖然是正式環境的首選,但它對 localhost 和 IP 位址就是沒轍,這是協定層面的限制。如果你還在用自簽憑證每次點「繼續前往不安全的網站」,mkcert 可以直接省下那些時間。

mkcert 安裝教學:macOS、Windows、Linux

安裝方式因作業系統而異,但都只需要一兩行指令。

macOS 安裝步驟

透過 Homebrew 安裝最方便:

$ brew install mkcert
$ brew install nss  # 使用 Firefox 才需要安裝

nss 是 Firefox 專用的憑證庫套件,因為 Firefox 有獨立的信任庫,不走系統層級的 Keychain。如果你只用 Chrome 或 Safari,不裝也沒關係。macOS 開發環境的其他設定可以參考Mac 桌面整理技巧

Windows 安裝步驟

透過 Chocolatey 安裝:

$ choco install mkcert

或透過 Scoop 安裝:

$ scoop bucket add extras
$ scoop install mkcert

兩種方式效果相同,選你習慣的套件管理器即可。安裝後如果本機有裝 A2 HostingWPWebHost 提供的開發工具,記得確認憑證路徑沒有衝突。

Linux 安裝步驟

Ubuntu / Debian 系列:

$ sudo apt install libnss3-tools
$ brew install mkcert   # 需已安裝 Linux 版 Homebrew

或直接從 mkcert 的 GitHub 安裝頁面下載預編譯的二進位檔。如果你是 WordPress.org 自架站的使用者,本機很可能已經有 Linux 環境,裝起來很快。

使用 mkcert 產生本機 SSL 憑證

安裝完成後,第一步是建立本地 CA 並安裝到系統信任清單,這個動作只需要做一次:

$ mkcert -install
Created a new local CA at "/Users/你的帳號/Library/Application Support/mkcert"
The local CA is now installed in the system trust store!
The local CA is now installed in the Firefox trust store (requires restart)!

看到以上訊息就表示成功了。接下來針對開發需求產生憑證:

$ mkcert localhost 127.0.0.1 ::1

這行指令會產生一個同時涵蓋 localhost、IPv4 和 IPv6 回環位址的憑證,產出的檔案在當前目錄下,名稱類似 localhost+2.pem(憑證)和 localhost+2-key.pem(私鑰)。也可以一次加入更多主機名稱:

$ mkcert example.test "*.example.test" localhost 127.0.0.1 ::1

這樣產生的憑證就涵蓋了自訂網域名稱、萬用字元子網域、localhost 和 IP 位址。在網域比價或研究網域選擇技巧時買的測試網域,都可以直接用在 mkcert 裡。

產生的兩個 .pem 檔案要好好保管,不要提交到 Git 版控。建議加到 .gitignore 或放在專案目錄以外的位置。

mkcert 與開發伺服器整合

有了憑證之後,下一步就是在開發伺服器中使用。

Node.js(Express)設定

最常見的情境是 Node.js 搭配 Express.js,只要在建立 HTTPS 伺服器時指定憑證路徑:

const https = require('https');
const fs = require('fs');
const express = require('express');

const app = express();

const options = {
  key: fs.readFileSync('localhost+2-key.pem'),
  cert: fs.readFileSync('localhost+2.pem')
};

https.createServer(options, app).listen(443, () => {
  console.log('HTTPS 伺服器運行中:https://localhost');
});

Vite / Webpack Dev Server

Vite 內建就支援指定憑證,在 vite.config.jsserver.https 設定中指定路徑即可。Webpack Dev Server 也是類似做法,在 devServer.https 選項裡指定憑證和私鑰。

對於使用 React、Vue 或 Next.js 的開發者,只要開發伺服器支援自訂 HTTPS 選項,mkcert 憑證都可以直接用。這樣在本機開發 Cloudflare Workers 邊緣應用或使用 Loader.io 壓力測試工具時,就能保持 HTTPS 環境的一致性。搭配 網站速度測試工具,還能在本機先行驗證 HTTPS 下的載入效能

在追求WordPress 網站優化的過程中,開發階段的 HTTPS 一致性很重要。很多快取外掛在啟用 HTTPS 後行為會不同,在本機先測好可以減少上線後的意外。

mkcert 搭配 Apache 與 Nginx 使用

如果你在本機跑 Apache 或 Nginx,mkcert 同樣適用。

Apache 設定 SSL

在 Apache 的 VirtualHost 設定中加入 SSL 指令:

<VirtualHost *:443>
    ServerName localhost
    DocumentRoot "/你的網站目錄"

    SSLEngine on
    SSLCertificateFile "/路徑/localhost+2.pem"
    SSLCertificateKeyFile "/路徑/localhost+2-key.pem"
</VirtualHost>

設定完成後執行 apachectl restartsystemctl restart apache2。如果你使用 DreamHost 主機HostGator 提供的本機開發環境,設定檔路徑可能略有不同,請參考各家文件。

Nginx 設定 SSL

Nginx 的設定更簡潔:

server {
    listen 443 ssl;
    server_name localhost;

    ssl_certificate /路徑/localhost+2.pem;
    ssl_certificate_key /路徑/localhost+2-key.pem;

    root /你的網站目錄;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

修改後先 nginx -t 確認語法正確,再 systemctl restart nginx。選擇 WPX Hosting 這類高品質託管服務的好處之一,就是正式環境的 SSL 設定已經由主機商處理好了。

如果你使用 XAMPP 或 MAMP,mkcert 也能搭配。只要在 Apache 設定檔中指向 mkcert 產生的憑證路徑即可。MAMP PRO 甚至可以在 GUI 中直接指定憑證路徑,不用手動改設定檔。對於在 SiteGround 上架設 WordPress 後需要在續約優惠期間做本機測試的使用者來說特別方便。

mkcert 的安全性限制與正確使用觀念

這部分很重要,一定要搞清楚。

mkcert 產生的本地 CA 私鑰等同於一把萬能鑰匙:任何人拿到它就能偽造任何 HTTPS 網站的憑證,而你的瀏覽器會信任這些假網站。所以請務必遵守以下原則:

只用在本機開發環境。絕對不要把 CA 憑證或私鑰部署到正式的 WordPress 安全防護架構中。正式環境的 SSL 憑證應該來自 Let’s Encrypt 或其他公信力憑證機構。搭配 WordPress 安全強化措施,才能全面提升安全層級。

不要分享 CA 私鑰。只有安裝了你的本地 CA 的裝置才會信任 mkcert 簽出的憑證,其他人的裝置不會。如果需要在團隊中共享,正確做法是讓每位成員都在自己的電腦上安裝 mkcert,而不是傳 CA 檔案。

不用時可以移除。執行 mkcert -uninstall 就會把本地 CA 從系統信任清單中刪除,之前簽出的所有憑證也會自動失效。

常見問題排解與進階技巧

Firefox 不信任 mkcert 憑證

Firefox 使用獨立的 NSS 憑證庫,不會直接讀取系統的信任清單。在 macOS 上需要額外安裝 nss 套件(brew install nss),在 Linux 上則需要安裝 libnss3-tools。安裝完成後重新執行 mkcert -install,Firefox 就會信任你的本地 CA 了。這跟設定 Cloudflare 網路測速一樣,需要確認工具鏈完整才能正常運作。

手機裝置信任本機 CA

要在手機上測試本機 HTTPS,需要把 mkcert 的 Root CA 憑證安裝到手機上。用 mkcert -CAROOT 找到 CA 憑證位置,把 rootCA.pem 傳到手機安裝。iOS 透過「設定 > 一般 > VPN 與裝置管理」安裝描述檔,Android 則到「設定 > 安全性 > 從儲存空間安裝憑證」。這對於測試行動版網站的 載入速度或驗證 TTFB 等待時間很有幫助。

憑證過期與重新產生

mkcert 產生的憑證預設有效期為 2 年又 3 個月。過期後重新執行相同的指令就會產生新的憑證覆蓋舊的。如果需要特定有效期限,可以使用 -days 參數自訂天數。

CAROOT 環境變數

預設情況下 mkcert 把 CA 放在使用者目錄下的特定資料夾。想自訂位置可以設定 CAROOT 環境變數。你也可以用 Testmysite.io 來驗證憑證設定是否正確。

在進行網站搜尋功能開發時,如果搜尋 API 需要 HTTPS 環境才能正常測試,mkcert 也能派上用場。很多開發者在搭配 WordPress 測試網站工具進行本機測試時,都會先裝好 mkcert 來確保 HTTPS 一致性。

適合誰 / 不適合誰

適合

  • 本機開發 Web 應用,需要 HTTPS 才能測試 Service Worker、Geolocation 等瀏覽器 API 的開發者
  • 架設 WordPress 網站,希望在本機就模擬正式 HTTPS 環境的站長
  • 需要為 IP 位址(例如 192.168.x.x 內網測試環境)產生 SSL 憑證的開發者
  • 團隊中每人各自在本機獨立安裝,用來保持開發環境一致性的小型開發團隊

不適合

  • 需要為公開網站提供 SSL 憑證(請改用 Let’s Encrypt 或購買商業憑證)
  • 需要多台裝置自動信任同一組憑證的企業環境(mkcert 是設計給單人本機使用的)
  • 需要即時線上驗證的場景(mkcert 只提供本機信任,外部使用者無法驗證)

常見問題 FAQ

mkcert 是免費的嗎?

是的,mkcert 採用 BSD 3-Clause 授權條款,完全免費,可以用在商業專案的開發流程中。

mkcert 可以用在正式環境嗎?

不行。mkcert 的 CA 只在你的電腦上受信任,其他使用者的裝置不會信任它簽出的憑證。正式環境請使用 Let’s Encrypt 或購買商業 SSL 憑證。如果你的網站架在 WordPress 備份外掛會自動處理的環境中,主機商通常也會提供免費 SSL 憑證。

mkcert 支援哪些瀏覽器?

根據官方文件說明,mkcert 支援 macOS、Linux 和 Windows 系統的信任庫,涵蓋 Chrome、Firefox、Edge、Safari 以及 Java 執行環境。只要正確安裝 nss 套件,Firefox 也完全沒問題。

如何解除 mkcert 的本機 CA?

執行 mkcert -uninstall 即可。這會把本地 CA 從系統信任清單中移除,所有由這個 CA 簽出的憑證也會失效。搭配 WP Rocket 快取外掛ShortPixel 圖片壓縮工具進行效能優化時,也要確認 SSL 設定是否正確。

mkcert 和 OpenSSL 自簽憑證有什麼不同?

最核心的差別是「信任」。OpenSSL 產生的自簽憑證不在系統信任清單中,瀏覽器會顯示安全警告。mkcert 則自動把本地 CA 安裝到系統信任庫,瀏覽器直接信任,完全零警告。對於需要在本機長期開發的圖片處理服務或其他需要 HTTPS 的應用來說,mkcert 體驗好很多。

mkcert 可以幫 IP 位址產生憑證嗎?

可以,這正是 mkcert 的強項之一。Let’s Encrypt 不支援為 IP 位址簽發憑證,但 mkcert 可以直接為 127.0.0.1、192.168.x.x 或任何 IP 位址產生 SSL 憑證。對於使用 預先載入測試環境或 SiteGround 主機進行遠端開發時需要 HTTPS 的場景非常實用。

手機要怎麼信任 mkcert 的憑證?

mkcert -CAROOT 找到 CA 憑證位置,把 rootCA.pem 傳到手機。iOS 透過「設定 > 一般 > VPN 與裝置管理」安裝描述檔,Android 到「設定 > 安全性 > 從儲存空間安裝憑證」。這跟設定 Hostinger 主機HostPapa 的行動版測試環境一樣,需要額外步驟但不複雜。

如果你對本機 SSL 憑證或 HTTPS 設定有進一步疑問,可以參考作者 Filippo Valsorda 的原文說明,裡面有更多技術細節。對於台灣的開發者,如果在選擇 戰國策虛擬主機遠振資訊主機等在地服務時需要 SSL 相關建議,也可以參考 TechMoon 的其他主機評價文章。搭配 Cloudflare Turnstile 驗證碼和 Cloudflare 電子郵件路由服務,可以讓你的網站安全體驗更完整。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 673

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


目錄
Share to...