你有沒有遇過這種網站:網址列多了一個 https,心裡卻少了一點安心?SSL 憑證就像網站的門衛,平常不一定有人注意,出事時大家卻都會找它。門衛不該只在月底才上班,所以憑證也不能等過期才處理。
這篇會用白話帶你走過 ZeroSSL 的申請、網域驗證與安裝流程,再說明如何用 ACME 用戶端自動續期。你也會看懂 ZeroSSL 和 Let's Encrypt 的差異,以及哪些舊教學內容現在已經不能照抄。讀完至少能完成一張憑證,並知道怎麼避免網站突然被瀏覽器貼上「不安全」貼紙。
目錄
先搞懂 SSL、TLS 與憑證
大家口語上常說「SSL 憑證」,但現代網站實際使用的是 TLS。憑證主要用來證明某個網域的控制權,並讓瀏覽器能驗證網站身分、建立加密連線。它不是防毒軟體,也不會替你擋住所有網站漏洞;它比較像是把網站和訪客之間的對話鎖起來。
因此,安裝憑證後仍要維持網站、CMS、外掛與伺服器的安全更新。HTTPS 是基本防護,不是無敵星星——瀏覽器可不會因為你買了憑證就幫你打王。
ZeroSSL 是什麼?
ZeroSSL 是憑證授權機構(CA),提供網頁介面與 ACME 協定兩種常見使用方式。官方 ACME 文件目前說明,透過 ACME 可免費申請 90 天憑證,並支援多網域與萬用字元憑證;自動化續期則交給 ACME 用戶端處理。
免費憑證的重點不是「永久有效」,而是「可以自動重新申請」。90 天聽起來很短,但自動化之後,它就像洗衣機:你不用每天盯著它轉,只要確認它真的有插電、有排水。
ZeroSSL 和 Let's Encrypt 怎麼選?
兩者都是免費提供 ACME 憑證的 CA,常見憑證有效期都是 90 天。差異主要在服務介面、帳號流程、支援方式與你使用的主機控制台,而不是「哪一家才有加密」。
| 比較項目 | ZeroSSL | Let's Encrypt |
|---|---|---|
| 免費 ACME 憑證 | 90 天 | 90 天;另有 45 天短效期 profile |
| 驗證方式 | 網頁/REST API 支援 Email、DNS CNAME、HTTP/HTTPS 檔案;ACME 則依用戶端與挑戰類型而定 | 依 ACME 用戶端與挑戰類型而定 |
| 自動化 | ACME、API、各種用戶端 | ACME、各種用戶端 |
| 網頁管理介面 | 有 | 主要以 ACME 用戶端與主機工具操作 |
| 萬用字元憑證 | ACME 支援,通常需 DNS 驗證 | ACME 支援,通常需 DNS 驗證 |
如果你的主機控制台已經內建其中一家,直接用內建功能通常最省事。若你需要自己在 SSH 中管理憑證,選擇支援度良好的 ACME 用戶端,比糾結 CA 名字更重要。
用 ZeroSSL 網頁介面申請憑證
ZeroSSL 的介面可能會改版,按鈕名稱不一定和舊截圖完全相同;以下保留流程的核心,不把 2022 年的畫面當成永遠不變的聖旨。
1. 建立憑證訂單
前往 ZeroSSL 管理介面,登入後建立新的憑證,輸入你的網域,例如:
example.com
www.example.com只輸入你能控制的網域。把別人的網域填進去並不會獲得神秘的管理權限,只會讓驗證卡在門口。
免費方案通常選擇 90 天憑證即可。CSR(Certificate Signing Request,憑證簽署要求)可以讓 ZeroSSL 代為產生;若你已有明確的金鑰管理需求,也可以自行產生 CSR,但私密金鑰必須妥善保管,不能貼到公開聊天室或丟進 Git。
2. 完成網域控制權驗證
憑證授權機構必須確認你能控制網域。ZeroSSL 網頁與 REST API 流程列出的常見方式包括:
- Email 驗證:使用
admin@、administrator@、hostmaster@、postmaster@或webmaster@等網域信箱收信。 - DNS CNAME 驗證:在 DNS 管理介面新增 ZeroSSL 提供的 CNAME 記錄。
- HTTP/HTTPS 檔案驗證:把指定的文字檔放到網站指定路徑,讓驗證系統可以讀取。
DNS 驗證通常較適合沒有上述信箱、或想日後自動化的人。DNS 記錄更新需要時間;驗證前請確認公開 DNS 已能查到正確記錄。TTL 可依 DNS 服務商建議設定,實際生效時間仍取決於 DNS 服務商與快取。
要注意:萬用字元憑證(例如 *.example.com)涵蓋整個子網域命名空間,不能用 HTTP 檔案驗證;這類情況通常要使用 DNS 驗證。
3. 下載並安裝憑證
驗證成功後,下載憑證套件。你通常會看到憑證、私密金鑰與 CA bundle 等內容。接著依主機環境安裝:
- cPanel/hPanel:找到 SSL 管理功能,選擇匯入或安裝憑證,依欄位貼上憑證、私密金鑰與 CA bundle。
- Nginx/Apache/LiteSpeed:把憑證與金鑰放到伺服器允許的安全路徑,並在虛擬主機設定中指定;改完後重新載入服務。
- 代管平台:優先使用平台內建的 SSL 或 AutoSSL。平台若能自動續期,就不必再手動複製貼上。
安裝完成後,請用瀏覽器開啟 https://你的網域,並確認憑證涵蓋實際使用的網域。example.com 和 www.example.com 是兩個名稱,不能只驗證其中一個就假設另一個也會自動通過。
用 ACME 與 acme.sh 自動續期
手動下載憑證可以學流程,但不適合長期維護。ZeroSSL 的 ACME 服務可搭配 acme.sh 等用戶端,自動完成申請與續期。請先確認你有 SSH、網站 webroot,以及安裝憑證所需的主機權限;共享主機的路徑和服務重新載入指令,不能直接照抄 VPS 的設定。
1. 安裝並指定 ZeroSSL
以下指令中的網域、信箱與路徑都要換成你的設定。部分版本的 acme.sh 能在註冊時自動取得 ZeroSSL 的 EAB;若自動取得失敗,請使用 ZeroSSL Developer 頁面產生 EAB 後,改用下方的明確註冊方式。
curl https://get.acme.sh | sh -s email=you@example.com
~/.acme.sh/acme.sh --set-default-ca --server zerossl
~/.acme.sh/acme.sh --register-account \
-m you@example.com \
--server zerossl若需要手動指定 EAB(External Account Binding),先到 ZeroSSL Developer 頁面 產生 EAB,再執行:
~/.acme.sh/acme.sh --register-account \
-m you@example.com \
--server zerossl \
--eab-kid "你的_EAB_KID" \
--eab-hmac-key "你的_EAB_HMAC_KEY"EAB 機密值不可提交到 Git 或公開訊息。如果註冊失敗,請先確認使用最新版本的 acme.sh、EAB 值沒有多餘引號或空白,必要時重新產生一組 EAB。
2. 以 webroot 驗證並申請
~/.acme.sh/acme.sh --issue \
-d example.com \
-d www.example.com \
-w ~/domains/example.com/public_html/-w 必須指向該網域真正公開的網站根目錄。若使用 DNS 驗證,則改用 acme.sh 對應的 DNS API 外掛;API 憑證應放在環境變數或受限制的設定檔中,不要直接寫入公開的 shell history。
3. 安裝到固定路徑
不要直接把 ~/.acme.sh/ 裡的內部檔案當成伺服器正式路徑。acme.sh 官方建議使用 --install-cert,把檔案複製到你指定的位置,並在續期後執行重新載入指令:
~/.acme.sh/acme.sh --install-cert -d example.com \
--key-file /etc/ssl/example.com/key.pem \
--fullchain-file /etc/ssl/example.com/fullchain.pem \
--reloadcmd "systemctl reload nginx"上面的 /etc/ssl 和 systemctl 只適用於你有相應權限的伺服器。若你使用 hPanel 或其他共享主機,請依主機商提供的憑證安裝方式調整,不能把 VPS 指令硬塞進共享主機——伺服器會比讀者更早發現你在硬撐。
acme.sh 會建立排程執行續期檢查,但你仍應確認排程存在、續期日誌沒有錯誤,並在測試環境驗證 --reloadcmd。自動化不是「設定一次後永遠忘記」,而是「少做手工,保留監控」。
常見錯誤排解
驗證失敗
- DNS 驗證:確認 CNAME 名稱和值完整,並等待 DNS 記錄生效。
- HTTP 檔案驗證:確認檔案可從指定的
http://或https://URL 讀取,沒有被登入頁、重新導向或 WAF 擋住。 - Email 驗證:確認信箱能收信,並使用 ZeroSSL 畫面提供的驗證連結。
憑證過期或續期後網站仍報錯
先確認 ACME 用戶端是否真的取得新憑證,再確認伺服器是否載入新的憑證與完整鏈(full chain)。如果檔案更新了但服務沒有 reload,網站看到的仍可能是舊憑證。
混合內容警告
HTTPS 只保護 HTTPS 資源。若頁面仍引用 http:// 的圖片、腳本或字型,瀏覽器可能阻擋它們。搜尋網站程式碼與資料庫中的絕對網址,逐一改用 HTTPS 或相對路徑。
cPanel AutoSSL 和手動憑證互相打架
同一個網域不要同時讓兩套系統搶著管理憑證。請先確認主機商的 AutoSSL 會使用哪一家 CA、多久續期,以及是否會覆蓋手動匯入的憑證,再選擇一套方案。
常見問題
ZeroSSL 憑證真的免費嗎?
ZeroSSL 官方 ACME 文件目前說明,ACME 方式可免費取得 90 天憑證。免費不代表不用驗證網域,也不代表可以省略續期管理。
ZeroSSL 憑證會讓網站排名變高嗎?
HTTPS 是現代網站的基本條件,也能保護傳輸內容;但憑證本身不是 SEO 加分按鈕,更不保證排名。網站速度、內容品質、可用性與其他搜尋因素仍然重要。
不更新憑證會怎樣?
憑證過期後,瀏覽器通常會顯示安全警告,訪客可能無法正常信任網站。最好的處理方式是設定 ACME 自動續期,並定期檢查續期結果,而不是等瀏覽器先發通知。
ZeroSSL 可以申請萬用字元憑證嗎?
ZeroSSL 的 ACME 文件列出萬用字元支援,但萬用字元驗證通常需要 DNS 驗證。請確認你的 DNS 服務商支援自動更新 TXT 或 CNAME 記錄,否則每次續期都可能要人工處理。
結語:憑證要自動更新,心情才不會過期
ZeroSSL 的網頁介面適合第一次申請憑證的人;ACME 加上 acme.sh,則適合希望把續期交給工具處理的人。無論選哪一條路,請記得三件事:
- 先完成網域控制權驗證,再安裝憑證。
- 不要把私密金鑰放進 Git、截圖或公開訊息。
- 自動續期後要確認服務真的載入新憑證。
最後提醒:Let's Encrypt 和 ZeroSSL 都能完成 HTTPS,真正危險的是「憑證過期了才想起它」。先把自動化設定好,再去泡咖啡;這次咖啡可以慢慢喝。
參考資料
- ZeroSSL ACME 文件:ACME 服務、90 天憑證、EAB 與支援的功能。
- ZeroSSL 網域驗證文件:Email、CNAME、HTTP/HTTPS 檔案驗證方式。
- ZeroSSL 驗證方式說明:網頁介面驗證步驟與 DNS TTL 建議。
- acme.sh:Change of default CA to ZeroSSL:指定 ZeroSSL 或 Let's Encrypt 的指令與 CA 行為。
- Let's Encrypt:FAQ:預設 90 天憑證與續期建議。
- Let's Encrypt:Profiles:90 天與 45 天憑證 profile,以及未來有效期限制。

