ACME(自動化憑證管理環境)用戶端分為兩類:瀏覽器端(如 GetHTTPS)和命令列端(如 Certbot 和 acme.sh)。兩者都與相同的 Let’s Encrypt API 通訊,簽發完全相同的憑證。區別在於工作在哪裡執行,以及誰控制金鑰。
比較
| 瀏覽器端 (GetHTTPS) | 命令列端 (Certbot, acme.sh) | |
|---|---|---|
| 執行位置 | 瀏覽器分頁 | 伺服器命令列 |
| 安裝 | 無需安裝 | 需要安裝(snap、pip、shell 指令碼) |
| 金鑰產生 | 瀏覽器(Web Crypto API) | 伺服器(OpenSSL) |
| 金鑰儲存 | 由你下載儲存 | 伺服器檔案系統 |
| 自動續簽 | ❌ 手動 | ✅ Cron/systemd |
| 需要伺服器存取權限 | 否 | 是 |
| 圖形介面 | ✅ | ❌ |
| 提交前預檢 | ✅ (GetHTTPS) | ❌ |
| 可腳本化 | ❌ | ✅ |
| 相依性 | 現代瀏覽器 | OpenSSL、curl、cron |
瀏覽器端的優勢場景
- 沒有伺服器存取權限 — 虛擬主機、代管平台,或者無法安裝軟體的伺服器
- 最高等級的金鑰隱私 — 私鑰僅存在於瀏覽器記憶體中,直到你下載為止
- 非技術使用者 — 網頁介面比終端機更容易上手
- 一次性憑證 — 比為單一憑證設定命令列工具更快
- 協助他人 — 共享瀏覽器操作畫面比口述命令列命令更簡單
命令列端的優勢場景
- 自動續簽 — 對正式環境伺服器至關重要,尤其是即將實行 47 天有效期的情況下
- 規模化基礎架構 — 可腳本化、可容器化,可透過組態管理工具控制
- DNS API 自動化 — acme.sh 等命令列工具支援 150+ DNS 服務商外掛
- CI/CD 整合 — 將憑證簽發納入部署流水線
- 伺服器自動設定 — Certbot 的 Nginx/Apache 外掛可直接設定 Web 伺服器
混合方案
許多團隊同時使用兩者:
- GetHTTPS 取得首張憑證(零設定時間)
- 之後安裝 Certbot 或 acme.sh 進行持續自動續簽
這種方式讓你無需前期投入即可立即啟用 HTTPS,等準備好了再新增自動化。
瀏覽器端 ACME 用戶端
瀏覽器端 ACME 用戶端是相對較新的類別。選項包括:
| 用戶端 | 開源 | 金鑰產生 | 直連 ACME | 預檢 |
|---|---|---|---|---|
| GetHTTPS | 否 | 瀏覽器(Web Crypto) | 是 | 是 |
| SSL For Free | 否 | ⚠️ 伺服器端 | 透過 ZeroSSL | 否 |
| ZeroSSL Dashboard | 否 | ⚠️ 可能是伺服器端 | 透過 ZeroSSL API | 否 |
GetHTTPS 是唯一使用 Web Crypto API 在本機產生金鑰並直接連接 Let’s Encrypt ACME API(無任何中介)的瀏覽器端用戶端。
命令列 ACME 用戶端
命令列生態系統更加成熟:
| 用戶端 | 語言 | 需要 Root | 自動續簽 | DNS 外掛 | 伺服器設定 |
|---|---|---|---|---|---|
| Certbot | Python | 是(snap/pip) | 是(systemd) | 透過外掛 | Nginx/Apache 自動設定 |
| acme.sh | Shell | 否 | 是(cron) | 150+ 內建 | 手動 |
| Lego | Go | 否 | 是 | 100+ | 手動 |
| Caddy | Go | N/A(內建) | 是(自動) | 透過 DNS 模組 | 內建於 Caddy 伺服器 |
| dehydrated | Shell | 否 | 是(cron) | 透過鉤子 | 手動 |
詳細比較:GetHTTPS vs Certbot → | GetHTTPS vs acme.sh →
未來:47 天憑證
隨著憑證有效期在 2029 年降至 47 天,天平進一步向命令列用戶端(正式環境)傾斜。每 30-35 天手動續簽(瀏覽器端)雖然可行但很繁瑣。
然而,瀏覽器端用戶端不會消失。它們持續服務於以下場景:
- 無法使用命令列的環境 — 虛擬主機、代管平台、限制性的企業環境
- 首次設定 — 5 分鐘內讓 HTTPS 生效,然後再決定是否安裝命令列工具
- 緊急續簽 — 伺服器上的 Certbot 壞了,你現在就需要憑證
- 為他人產生憑證 — 為客戶或同事產生憑證而無需存取他們的伺服器
- 隱私敏感場景 — 私鑰不應存在於任何伺服器上,即使是暫時的
常見問題
瀏覽器端用戶端安全性較低嗎?
並非如此。GetHTTPS 使用 Web Crypto API 產生金鑰(與 TLS 本身使用的是相同的密碼學原語),並透過 HTTPS 直接與 Let’s Encrypt 通訊。金鑰從不接觸任何第三方伺服器。主要的權衡是缺乏自動續簽能力,而非安全性。
47 天憑證會讓瀏覽器端用戶端過時嗎?
不會過時,但作為唯一的續簽方式會變得不太方便。它們在初始設定、緊急續簽和無伺服器存取場景中仍有價值。但對於每 30-40 天需要續簽的正式環境負載,命令列自動化是更務實的長期選擇。
應該選擇哪個命令列用戶端?
Certbot — 如果你需要 Nginx/Apache 自動設定且不介意 Root 權限。acme.sh — 如果你需要無 Root 執行、DNS API 外掛和輕量級方案。Caddy — 如果你正在更換 Web 伺服器,它可以零設定自動處理 HTTPS。
瀏覽器端用戶端能用於自動化流水線嗎?
不能直接使用 — 瀏覽器端用戶端需要人工互動。對於 CI/CD 流水線或基礎架構即程式碼方案,請使用命令列用戶端。GetHTTPS 專為人工操作流程設計;Certbot 和 acme.sh 專為機器操作流程設計。