使用 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 很重要請小心保管
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