在 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 憑證

  1. 01

    執行 `sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com`(來源 S1)

  2. 02

    依提示輸入 Email、同意服務條款,選擇自動將 HTTP 重新導向至 HTTPS(來源 S5)

  3. 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 的差異比較

項目Cronsystemd 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 狀態。

  1. 01

    執行 `sudo nginx -t` 確認設定語法正確

  2. 02

    重新載入 Nginx:`sudo systemctl reload nginx`

  3. 03

    使用 `curl -I https://yourdomain.com` 檢查回應頭是否包含 `200 OK` 與正確的證書資訊

  4. 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
  1. 如何使用 Certbot 建立免費的 SSL 網域憑證 - 下班後的工程師筆記
  2. Linux中安裝Let's Encrypt自動更新,並產生SSL憑證,並加入到apache中 - YANGSHEEP DESIGN羊羊數位科技有限公司
  3. Let's Encrypt 免費 SSL 憑證申請與自動續約 | Astroicers Blog
  4. 解析 Certbot(Let's encrypt) 使用方式 - DEVLOG of andyyou
  5. 在Linux上使用Let's Encrypt搭配NginX獲得免費的SSL憑證 - KodeLab
  6. Certbot 自動續約怎麼設才不會再過期?含檢查清單
  7. [Ubuntu] 使用 Certbot 自動更新 Let's Encrypt 憑證 | 卡螺絲
  8. 安裝Certbot 工具,與Let’s Encrypt 申請SSL金鑰憑證 ,自動更新SSL憑證- Centos7+Certbot - 霍普行銷 | 網站製作 | 平面設計 | 廣告投放 | 網路行銷 | 口碑行銷
  9. 使用 Certbot 來為網站申請 Let’s Encrtpt 憑證 (CentOS 7) – 仲佑的網誌
  10. 如何使用 Certbot 命令列工具建立免費的 TLS/SSL 頂層網域憑證 | The Will Will Web
Haeng-un Services

把方法落到實際品牌系統

從策略到執行,選擇你現在最需要補強的一環。

想在 Google 搜尋與 AI 搜尋中優先看到 Haeng-un?

可將 haeng-un.com 設為 Google 偏好來源。

加入 Google 偏好來源
Work with Haeng-un

把下一步做得更清楚。

需要網站、影像或社群內容一起整理,我們可以從現在最重要的問題開始。

合作洽詢