你有沒有遇過這種網站:網址列多了一個 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 天。差異主要在服務介面、帳號流程、支援方式與你使用的主機控制台,而不是「哪一家才有加密」。

比較項目ZeroSSLLet'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 流程列出的常見方式包括:

  1. Email 驗證:使用 admin@administrator@hostmaster@postmaster@webmaster@ 等網域信箱收信。
  2. DNS CNAME 驗證:在 DNS 管理介面新增 ZeroSSL 提供的 CNAME 記錄。
  3. 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.comwww.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/sslsystemctl 只適用於你有相應權限的伺服器。若你使用 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,則適合希望把續期交給工具處理的人。無論選哪一條路,請記得三件事:

  1. 先完成網域控制權驗證,再安裝憑證。
  2. 不要把私密金鑰放進 Git、截圖或公開訊息。
  3. 自動續期後要確認服務真的載入新憑證。

最後提醒:Let's Encrypt 和 ZeroSSL 都能完成 HTTPS,真正危險的是「憑證過期了才想起它」。先把自動化設定好,再去泡咖啡;這次咖啡可以慢慢喝。

參考資料