繁體中文(香港)
  • https
  • tls
  • nginx
  • express
  • proxy

處理本地 HTTPS 開發

探索如何在你的開發工作流程中實現本地 HTTPS,使用 Mkcert 等工具,通過 Express.js 和 Next.js 的逐步指南。

Sijie
Sijie
Developer

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

當開發 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.pemexample.com-key.pem 文件。

步驟 3:在你的應用中設置 HTTPS

有了證書文件,你現在可以在你的應用中啟用 HTTPS。與生產環境不同,生產環境中 HTTPS 由 Nginx 等反向代理處理,在本地開發中,我們可以直接在 web 應用程式中設置。讓我們以 Express 為例。

使用以下代碼創建一個簡單的 Express 服務器:

運行應用,訪問 https://example.com 來查看你的安全 Express 應用在運作。

為 Logto OSS 啟用 HTTPS

Logto OSS 默認要求 HTTPS,除非是 localhost,如果你想在其他域名上本地運行 Logto,你需要設置本地 HTTPS。

  1. 設置 Logto:請按照鏈接在你的本地機器上設置 Logto:https://docs.logto.io/docs/get-started/。
  2. 準備證書:使用 mkcert 生成兩個 .pem 文件並將它們放置在一個目錄中。
  3. 設置環境變量:提供 HTTPS_CERT_PATHHTTPS_KEY_PATH 來通過 Node 啟用 HTTPS,請查看此鏈接了解更多。

總結

設置本地開發的 HTTPS 並不像看起來那麼複雜。在 Mkcert 等工具的幫助下,生成受信任的本地證書變得快速而簡單。儘管 localhost 粗體 通常能處理許多只有 HTTPS 的功能,有時你需要完整的 HTTPS 支援,這份指南幫助你做到這一點。無論你是在測試 API,使用 Logto OSS,還是只是模擬生產環境,遵循這些步驟會確保你為安全、無縫的開發做好準備。