使用 certbot 讓 wildcard certificate 可自動更新憑證

由於 Let’s Encrypt Wildcard Certificate 使用 DNS 認證
所以無法用傳統的方式自動更新 ./certbot renew
如果你剛好使用 Cloudflare 的話就有福了!

Cloudflare 支援 API key 認證
可以透過一些第三方的模組來自動認證
這樣就不用每三個月都要手動認證了

以下教學參考此篇文章

前情提要

下方使用 CentOS7 當作示範環境
如果你還沒裝 certbot,請先執行 $ yum install certbot

1. 首先要先登入 Cloudflare,右上角 My Profile 那就可找到 Global API Key

請點選 View 輸入密碼就會出現,這把 Key 很重要請小心保管

IMAGE

2. 由於這把 Key 很重要,所以要放在一個安全的地方

原作者把它放在 /root/.secrets 裡面(你要改地方也行,最後的參數路徑記得改就好)
但系統預設沒有 /root/.secrets 這個目錄
所以要先建立這個目錄 $ mkdir /root/.secrets
然後把下面這兩行填好後放到 /root/.secrets/cloudflare.ini 裡面

dns_cloudflare_email = "請填你的cloudflare帳號,也就是email"
dns_cloudflare_api_key = "請輸入上述的 Global API Key"

3. 修改 /root/.secrets/cloudflare.ini 權限

$ sudo chmod 0700 /root/.secrets/
$ sudo chmod 0400 /root/.secrets/cloudflare.ini

4. 安裝 Certbot 及 CloudFlare DNS 認證套件

$ sudo yum install python-pip
$ sudo pip install certbot-dns-cloudflare

5. 申請 Wildcard SSL 憑證

example.com 請帶入自己的 domain

$ sudo /usr/local/bin/certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

6. 於 crontab 設定自動 renew

編輯 crontab $ crontab -e

以下是 nginx

14 5 * * * /usr/local/bin/certbot renew --quiet --post-hook "/usr/sbin/service nginx reload" > /dev/null 2>&1

以下是 apache

14 5 * * * /usr/local/bin/certbot renew --quiet --post-hook "systemctl reload httpd" > /dev/null 2>&1

我的環境:

  • CentOS 7.5
  • Certbot 0.27.1

參考文章:
Wildcard certificate from Let’s Encrypt with CloudFlare DNS

Comments

Popular posts from this blog

CentOS7 如何新增/移除 Rich Rule for firewalld

mac 安裝 mtr

Howto use Postman test Cors