處理本地 HTTPS 開發
探索如何在你的開發工作流程中實現本地 HTTPS,使用 Mkcert 等工具,通過 Express.js 和 Next.js 的逐步指南。
當開發 web 應用程式時,特定情境即使在本地環境中也需要 HTTPS。無論是你在整合安全的第三方 API,測試只有 HTTPS 的功能如服務工作人員和 HTTP/2,或模擬生產環境以確保無縫部署,HTTPS 都變得至關重要。此外,某些瀏覽器 API——例如地理定位、推送通知和憑據管理——需要安全的上下文才能有效運行。
例如,Logto OSS 默認要求 HTTPS,除非是 localhost
,在這種情況下,學習設置本地 HTTPS 可以節省你的時間。本文將指導你設置本地開發的 HTTPS,介紹如 Mkcert 這樣的工具來簡化過程。
localhost
的作用及只有 HTTPS 的功能
localhost
是一個特殊的域名,可以處理許多只有 HTTPS 的功能,如服務工作人員、安全 cookie、HTTP/2 和其他瀏覽器 API 可以在 http://localhost:xxxx
中運作良好,所以你可能不總是需要本地 HTTPS,先嘗試 localhost
吧!
嘗試 Cloudflare 隧道
之前在這篇文章中介紹過,Cloudflare 隧道可以輕鬆地將你的本地服務公開到互聯網,並準備好 HTTPS。
設置本地 HTTPS
上述 2 個選項無法解決你的問題?那我們就來設置本地 HTTPS。在以下步驟中,我們假設本地的域名是 example.com
。
步驟 1:更新 hosts 文件
在開始之前,確保目標域名解析到你的本地機器,可以通過更新 hosts 文件來完成。打開 Linux/macOS 上的 /etc/hosts
或 Windows 上的 C:\Windows\System32\drivers\etc\hosts
,並添加以下行:
步驟 2:生成證書
HTTPS 的第一件事就是證書。在生產環境中,可以通過 "Let's encrypt" 等工具完成或從你的服務提供商購買證書。但在本地開發中,我們可以直接生成證書。
Mkcert 是一個簡單的零配置工具,可以用你想要的任何名稱製作本地信任的開發證書。
首先,按照官方指南安裝 mkcert,假設你在使用 macOS:
對於 Windows 和 Linux,請查看這個鏈接。
現在 mkcert 已經準備好使用,運行這個命令來生成一個本地 CA 並將根證書儲存到你的系統信任庫中。要了解更多有關 "CA" 和證書的信息,請查看 Cloudflare 的文件。
然後,生成本地 SSL 證書
這會在你的目錄中創建 example.com.pem
和 example.com-key.pem
文件。
步驟 3:在你的應用中設置 HTTPS
有了證書文件,你現在可以在你的應用中啟用 HTTPS。與生產環境不同,生產環境中 HTTPS 由 Nginx 等反向代理處理,在本地開發中,我們可以直接在 web 應用程式中設置。讓我們以 Express 為例。
使用以下代碼創建一個簡單的 Express 服務器:
運行應用,訪問 https://example.com
來查看你的安全 Express 應用在運作。
為 Logto OSS 啟用 HTTPS
Logto OSS 默認要求 HTTPS,除非是 localhost
,如果你想在其他域名上本地運行 Logto,你需要設置本地 HTTPS。
- 設置 Logto:請按照鏈接在你的本地機器上設置 Logto:https://docs.logto.io/docs/get-started/。
- 準備證書:使用
mkcert
生成兩個.pem
文件並將它們放置在一個目錄中。 - 設置環境變量:提供
HTTPS_CERT_PATH
和HTTPS_KEY_PATH
來通過 Node 啟用 HTTPS,請查看此鏈接了解更多。
總結
設置本地開發的 HTTPS 並不像看起來那麼複雜。在 Mkcert 等工具的幫助下,生成受信任的本地證書變得快速而簡單。儘管 localhost
粗體 通常能處理許多只有 HTTPS 的功能,有時你需要完整的 HTTPS 支援,這份指南幫助你做到這一點。無論你是在測試 API,使用 Logto OSS,還是只是模擬生產環境,遵循這些步驟會確保你為安全、無縫的開發做好準備。