GetHTTPS 是一個基於瀏覽器的 ACME 用戶端,無需任何伺服器端元件即可從 Let’s Encrypt 簽發免費的 HTTPS 憑證。
架構
傳統 ACME 工具(如 certbot 和 acme.sh)執行在你的伺服器上,需要 Shell 存取權限、root 權限,通常還需要設定 cron 排程任務來續簽憑證。
GetHTTPS 採用了截然不同的方式:所有操作都在瀏覽器分頁中完成。你的私鑰透過 Web Crypto API 在本機產生,永遠不會離開目前頁面。
工作流程
-
產生帳號金鑰 — 瀏覽器使用
crypto.subtle.generateKey()建立一個 P-256 ECDSA 金鑰對,作為你的 ACME 帳號識別。 -
註冊帳號 — 將公鑰註冊到 Let’s Encrypt 的 ACME API。每個請求都透過 JWS(JSON Web Signature)簽章。
-
建立訂單 — 指定憑證需要涵蓋的網域。Let’s Encrypt 回傳一組 challenge 驗證任務。
-
完成 Challenge — 對於每個網域,你需要完成 HTTP-01 challenge(在伺服器上放置檔案)或 DNS-01 challenge(新增 TXT 記錄)。
-
預先檢查驗證 — 在提交給 Let’s Encrypt 之前,GetHTTPS 會從公網檢查你的 challenge 設定是否正確,避免因設定錯誤浪費速率限制次數。
-
簽發憑證 — Challenge 驗證通過後,產生獨立的憑證金鑰對,建構 CSR(憑證簽章請求)並完成訂單最終化。Let’s Encrypt 回傳簽章的憑證鏈。
-
下載部署 — 下載
privkey.pem、cert.pem、chain.pem和fullchain.pem,部署到你的伺服器。
安全模型
- 私鑰絕不離開瀏覽器 — 透過 WebCrypto 產生,僅存在於記憶體中
- 無代理 — 瀏覽器直接與 Let’s Encrypt 的 ACME API 通訊
- 無後端 — gethttps.com 僅提供靜態檔案
- 開源 — 全部用戶端程式碼可稽核
關於續簽
Let’s Encrypt 憑證有效期為 90 天。續簽時只需重新執行相同流程。如果儲存了帳號金鑰,Let’s Encrypt 會識別你的帳號,無需重新註冊。
如果需要自動續簽,建議使用伺服器端用戶端(如 certbot)。GetHTTPS 專為手動、一次性簽發設計,適合需要完全控制和透明度的場景。