網站從 HTTP 切換到 HTTPS,對多數站長來說像是一道說大不大、說小不小的門檻。憑證本身免費,流程看起來也不複雜,但實際操作時仍會遇到主機支援方式不同、自動續約未設妥,或者憑證裝好了卻仍跳出「不安全」警示的情況。
2026 年 3 月起,業界出現一項值得注意的轉變,稍後再詳談。先從整個安裝流程開始走一遍,讓這篇文章成為你從申請到穩定運作的完整參考。
憑證效期縮短,自動化管理已成必要
Let’s Encrypt 將免費 SSL 憑證(SSL Certificate)的普及往前大幅推進,它把效期定在 90 天,目的是促使使用者盡早建立自動化流程,而非半年才檢查一次。2026 年 3 月 15 日,整個業界的效期規定又緊了一圈——所有在這個日期之後新核發的 TLS 憑證,最長效期從原本的 398 天縮減到 200 天。主導這項變更的推力來自 Apple,各大根憑證機構(Certificate Authority)已跟進實施。
這個變化對站長的直接影響,是手動更新作為應急措施的可接受時間窗口愈來愈短。過去一張商業憑證可以撐一年,即便忘記設定自動化,還有充裕的時間補救。現在 90 天到期、200 天到期,稍不留意網站就會跳出瀏覽器安全警告,訪客看到紅鎖頭,退出率立刻拉高。
正因如此,安裝憑證和設定自動續約必須視為同一個任務,而不是先裝再說、日後再管。不同主機環境有不同的做法,以下分兩條線說明:使用 cPanel 控制面板的共享主機,以及有 root 權限的 VPS 環境。
cPanel AutoSSL 搭配 Let’s Encrypt 完成安裝
cPanel 控制面板的共享主機對多數站長最為常見,它內建一套 AutoSSL 機制,負責自動向 Let’s Encrypt 申請、安裝與續約憑證,使用者無須介入指令列操作。
確認主機商已啟用 Let’s Encrypt 供應商
AutoSSL 本身是 cPanel 的功能,但背後的憑證供應商由主機商設定。部分主機商預設使用自家品牌的免費憑證,並非 Let’s Encrypt。登入 cPanel 後,在「安全性(Security)」區塊找到「SSL/TLS 狀態(SSL/TLS Status)」頁面,若每個域名旁邊的憑證供應商欄位顯示「Let’s Encrypt」,代表設定正確。若顯示其他供應商,可向主機商確認是否支援切換;多數主流主機商在 2024 年後都已將 Let’s Encrypt 設為預設選項。
透過 SSL/TLS 狀態頁面觸發安裝
在「SSL/TLS 狀態」頁面,可看到帳號底下所有域名的憑證狀態,包含主域名、子域名與郵件用域名。若某個域名尚未安裝憑證,狀態欄會顯示紅色警示。勾選該域名後,點選頁面上方的「執行 AutoSSL(Run AutoSSL)」按鈕,系統會立即向 Let’s Encrypt 發起驗證,通常 5 分鐘以內憑證就會出現在清單裡,狀態更新為綠色。
安裝完成後無須另外設定續約排程,cPanel 會在憑證到期前約 14 天自動觸發 AutoSSL 重新申請。這個自動化流程在背景運作,無需人工介入。
若主機商不支援 AutoSSL
遇到少數仍不支援 AutoSSL 或 Let’s Encrypt 的主機環境,可以改用「WP Encryption」這類 WordPress 外掛,透過域名所有權驗證(Domain Validation)向 Let’s Encrypt 申請憑證,申請流程在 WordPress 後台完成,不需要離開控制面板。這類外掛的自動續約通常依賴 WordPress 本身的排程機制(WP-Cron),若站台流量偏低、WP-Cron 觸發不穩定,建議搭配主機商的真實 cron 任務確保可靠度。
VPS 環境用 certbot 申請憑證與設定自動續約
有 root 權限的 VPS 或獨立主機環境,標準做法是使用 certbot——由電子前哨基金會(Electronic Frontier Foundation,EFF)維護的官方 Let’s Encrypt 用戶端。
安裝 certbot 並申請憑證
現行最推薦的安裝方式是透過 Snap 套件管理員,而非各 Linux 發行版的原生套件倉庫。Snap 版本更新最即時,且會自動設定 systemd timer 處理續約。
以 Ubuntu 為例,安裝步驟如下:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
安裝完成後,針對 Nginx 或 Apache 直接申請憑證,並讓 certbot 自動修改設定檔:
# Nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# Apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
certbot 會提示輸入電子郵件地址(用於到期通知)並要求同意服務條款,完成後憑證即安裝完畢,伺服器設定檔也會自動加入 HTTPS 跳轉規則。
確認 systemd timer 正常運作
Snap 版 certbot 安裝後會自動建立 snap.certbot.renew.timer 這個 systemd 計時器,每日執行兩次憑證到期檢查,在憑證剩餘效期低於 30 天時自動觸發續約。
用以下指令確認計時器狀態:
sudo systemctl status snap.certbot.renew.timer
若狀態顯示「active (waiting)」即表示正常。可進一步用 --dry-run 旗標模擬一次續約流程,確認整個機制無誤:
sudo certbot renew --dry-run
若以 apt 安裝的舊版 certbot 尚未升級到 Snap 版本,則需手動確認 /etc/cron.d/certbot 這個 cron 任務是否存在並設定正確。若不存在,可用 crontab -e 加入一行:
0 3,15 * * * root certbot renew --quiet
意思是每天凌晨 3 點與下午 3 點各執行一次,--quiet 旗標讓無需更新時不輸出任何訊息。
啟用 HTTPS 強制跳轉與修正混合內容
憑證安裝完畢,並不代表整個網站已完整切換到 HTTPS。還有兩件事要確認,少了其中任何一件,瀏覽器仍可能顯示「不安全」或混合內容(Mixed Content)警告。
強制跳轉(HTTP to HTTPS Redirect)確保所有訪客都被引導到加密連線,而非從任何入口都能以明文存取網站。混合內容則是指頁面本身走 HTTPS,但頁面內嵌的某些資源——圖片、樣式表、腳本——仍使用 HTTP 位址載入,瀏覽器把這視為安全漏洞,會阻擋載入或跳出警告。
修正這兩個問題,依環境不同有幾條路徑可選:
- cPanel 的 HTTPS 跳轉開關:在 cPanel「域名(Domains)」設定頁面,找到「強制 HTTPS 跳轉(Force HTTPS Redirect)」選項,切換為啟用即可。這個設定會在
.htaccess寫入 301 跳轉規則,對 Apache 環境最為直接。 - WordPress 後台網址設定:進入 WordPress「設定(Settings)」→「一般(General)」,把「WordPress 位址(URL)」與「網站位址(URL)」兩個欄位,從
http://改成https://。這一步是修正混合內容的根本措施,不少站長裝好憑證卻忽略了這裡,導致前端仍有資源走 HTTP 載入。 - Really Simple SSL 外掛:若對伺服器設定較不熟悉,這款外掛能一次處理 HTTP 跳轉、WordPress 網址更新,並動態把頁面內的 HTTP 連結改寫為 HTTPS,對資料庫內舊有的 HTTP 圖片 URL 也能即時修正。
- 資料庫搜尋取代:舊文章、舊圖片在啟用 SSL 之前就已存入資料庫的 HTTP URL,外掛即時改寫只能治標。若要徹底解決,可在 phpMyAdmin 或透過 WP-CLI 對資料庫執行搜尋取代,把
http://yourdomain.com全換為https://yourdomain.com。
處理完跳轉與混合內容之後,用瀏覽器開發人員工具的「主控台(Console)」確認頁面不再出現 Mixed Content 警告,鎖頭圖示應顯示為完整鎖定狀態。
憑證安裝後幾個常見的障礙
憑證看起來裝好了,卻還是有問題,這種情況的根源通常不在憑證本身。以下幾個高頻出現的情境值得逐一核對。
域名 DNS 尚未完全傳播。Let’s Encrypt 驗證憑證時需要對外解析域名,若域名剛換 IP 或 DNS 記錄才更新,在全球 DNS 傳播(DNS Propagation)完成前,憑證申請可能會失敗,甚至取得憑證後某些地區的訪客仍無法存取 HTTPS。這種情況只能等待,通常 24 至 48 小時後自然解決。
子域名的憑證覆蓋範圍。標準 Let’s Encrypt 憑證只針對申請時明確填寫的域名核發,不會自動涵蓋未列出的子域名。若網站有 www、blog、shop 等子域名,申請時需要一併列出,或申請萬用憑證(Wildcard Certificate)——後者需要 DNS 驗證(DNS Challenge),流程略複雜,適合熟悉 DNS 管理的使用者。
cPanel 環境遇到「等待中(Pending)」不更新。偶爾 AutoSSL 會停在排隊狀態,原因多是域名指向的 IP 與 cPanel 帳號設定的 IP 不符,Let’s Encrypt 無法透過 HTTP 驗證確認域名所有權。確認域名的 A 記錄確實指向主機 IP 後,手動重跑一次 AutoSSL 通常就能解決。
憑證到期通知寄到,但續約卻沒有自動完成。certbot 送出通知是一個機制,實際執行續約是另一個機制,兩者相互獨立。收到快到期的通知信,代表 Let’s Encrypt 偵測到憑證即將過期,但 certbot 的自動化流程可能尚未成功執行更新。這時手動執行一次 certbot renew 確認有沒有錯誤訊息,再回頭檢查 systemd timer 或 cron 任務是否仍在正常運作。
主機 SSL 憑證設定這件事,最初看起來像是一次性的技術任務。隨著效期縮短的趨勢持續,它實際上更接近一項需要持續維護的基礎設施工作。把自動化流程設妥,就能讓它從「需要主動盯管」的清單裡退場,騰出心力專注在網站內容與經營本身。