在 Linux 伺服器上使用 Certbot 可以自動續期 Let’s Encrypt SSL 憑證,避免手動更新與頻繁的 Rate Limit,讓網站持續保持 HTTPS 安全。以下從安裝、取得憑證、設定自動續期、常見錯誤與進階技巧全方位說明。
安裝 Certbot 與必要套件
- Ubuntu/Debian 系統:`sudo apt update && sudo apt install certbot python3-certbot-nginx -y`(來源 S3)
- CentOS/RHEL 系統:啟用 EPEL 後 `sudo yum install certbot python3-certbot-nginx -y`(來源 S8)
- 建議使用 Snap 安裝最新版本:`sudo snap install --classic certbot`(來源 S3)
取得與安裝 SSL 憑證
- 01
執行 `sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com`(來源 S1)
- 02
依提示輸入 Email、同意服務條款,選擇自動將 HTTP 重新導向至 HTTPS(來源 S5)
- 03
Certbot 會自動修改 Nginx 設定並載入新憑證,完成後可使用 `sudo nginx -t && sudo systemctl reload nginx` 確認
設定自動續期與避免 Rate Limit
Let’s Encrypt 憑證有效期 90 天,建議在憑證剩餘 30 天前自動續期。Certbot 會在安裝時自動建立 systemd timer,亦可自行加入 Cron。
Cron vs systemd timer 的差異比較
| 項目 | Cron | systemd timer |
|---|---|---|
| 設定方式 | 編輯 crontab(來源 S1) | 自動建立 timer(來源 S6) |
| 執行頻率 | 自行決定,例如 `0 */12 * * *`(來源 S1) | 預設每日兩次 |
| 可見性 | 需要手動檢查日誌 | 使用 `systemctl status certbot.timer` 直接查看(來源 S6) |
為避免 Let’s Encrypt 的 Rate Limit(每週 5 次同一域名的證書請求),可採取以下措施:
- 使用 staging 環境測試 `--staging` 參數(來源 S3)
- 在正式環境一次申請多個子域名,減少請求次數(來源 S2)
- 將自動續期排程分散在不同時間點,例如 `0 3,15 * * *`(來源 S5)
驗證憑證安裝與測試
取得憑證後,務必確認 Nginx 已正確載入新憑證,並使用外部工具檢查 HTTPS 狀態。
- 01
執行 `sudo nginx -t` 確認設定語法正確
- 02
重新載入 Nginx:`sudo systemctl reload nginx`
- 03
使用 `curl -I https://yourdomain.com` 檢查回應頭是否包含 `200 OK` 與正確的證書資訊
- 04
在瀏覽器開發者工具的 Security 標籤確認鎖頭圖示為綠色且證書鏈完整
監控與告警設定
即使自動續期機制可靠,仍建議將憑證到期日納入監控平台(如 Prometheus、Zabbix)或使用簡易腳本每日檢查 `certbot certificates` 輸出。若發現即將過期且續期失敗,可透過 Email、Slack 或 Line Bot 發送告警,避免因忘記續期而造成服務中斷。
常見錯誤與排查
- 續期失敗:先執行 `sudo certbot renew --dry-run` 確認(來源 S3)
- Nginx 配置錯誤:使用 `sudo nginx -t` 檢查語法(來源 S3)
- 憑證路徑錯誤:憑證通常位於 `/etc/letsencrypt/live/<domain>/`(來源 S5、S8)
- Systemd timer 未啟動:檢查 `systemctl status certbot.timer`,若為 inactive,重新啟用 `systemctl enable --now certbot.timer`(來源 S6)
- Rate Limit 被觸發:檢查 `/var/log/letsencrypt/letsencrypt.log` 中的 `too many requests` 訊息,改為使用 `--staging` 測試或調整排程時間
進階技巧與最佳實踐
以下技巧可提升自動化穩定性與安全性:
- 在續約後使用 `--post-hook "systemctl reload nginx"` 立即重新載入服務(來源 S3)
- 將憑證監控加入監控平台,設定告警(自行實作)
- 定期檢查 `certbot certificates` 列出所有憑證與到期日(來源 S5)
- 使用 DNS-01 挑戰配合自動 DNS API(如 Cloudflare)可在無法開放 80/443 端口的環境中完成自動續期(來源 S4)
參考資料10
- 如何使用 Certbot 建立免費的 SSL 網域憑證 - 下班後的工程師筆記
- Linux中安裝Let's Encrypt自動更新,並產生SSL憑證,並加入到apache中 - YANGSHEEP DESIGN羊羊數位科技有限公司
- Let's Encrypt 免費 SSL 憑證申請與自動續約 | Astroicers Blog
- 解析 Certbot(Let's encrypt) 使用方式 - DEVLOG of andyyou
- 在Linux上使用Let's Encrypt搭配NginX獲得免費的SSL憑證 - KodeLab
- Certbot 自動續約怎麼設才不會再過期?含檢查清單
- [Ubuntu] 使用 Certbot 自動更新 Let's Encrypt 憑證 | 卡螺絲
- 安裝Certbot 工具,與Let’s Encrypt 申請SSL金鑰憑證 ,自動更新SSL憑證- Centos7+Certbot - 霍普行銷 | 網站製作 | 平面設計 | 廣告投放 | 網路行銷 | 口碑行銷
- 使用 Certbot 來為網站申請 Let’s Encrtpt 憑證 (CentOS 7) – 仲佑的網誌
- 如何使用 Certbot 命令列工具建立免費的 TLS/SSL 頂層網域憑證 | The Will Will Web
把方法落到實際品牌系統
從策略到執行,選擇你現在最需要補強的一環。
可將 haeng-un.com 設為 Google 偏好來源。
加入 Google 偏好來源把下一步做得更清楚。
需要網站、影像或社群內容一起整理,我們可以從現在最重要的問題開始。
