2024 certbot 自動更新憑證方式 (使用 nginx、cloudflare api key)
安裝對應的 package (環境 ubuntu 22.04)
邏輯上因為這個驗證方法是走 dns record 驗證應該不需要安裝 python-certbot-nginx ,但我沒有移除再測試一次
就一樣先留作紀錄摟
sudo apt-get install software-properties-common
sudo apt-get update
sudo apt-get install certbot
sudo apt-get install python-certbot-nginx
sudo apt-get install python3-certbot-dns-cloudflare
https://certbot-dns-cloudflare.readthedocs.io/en/stable/
到cloudflare網站上設定 API KEY
這部分發現GUI 介面有點問題,設定單個 zone 的key就是會無效,設定2個 zone 就 ok
感覺是個 bug 但總比用 global key 好
在機器上設定 api-key file
/root/.secrets/certbot/cloudflare.ini
# Cloudflare API credentials used by Certbot
dns_cloudflare_email = [email protected]
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234
自動更新的部分是寫一個簡易的 script 直接執行
/home/[user]/certbot/renewcert.sh
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 30 \
-d *.[your-domain]
sudo crontab -e
0 0 1 * * sh /home/[user]/certbot/renewcert.sh
docker run --rm -it \
-v /volume/letsencrypt:/etc/letsencrypt \
-v /volume/letsencrypt/log:/var/log/letsencrypt \
-v /volume/scripts/cloudflare.ini:/cloudflare.ini \
certbot/dns-cloudflare:v2.6.0 certonly \
--preferred-chain "ISRG Root X1" \
--force-renewal \
--preferred-challenges dns \
--server https://acme-v02.api.letsencrypt.org/directory \ --email="[email protected]" \ -d "*.yourdomain.com" \ --dns-cloudflare \ --dns-cloudflare-credentials /cloudflare.ini \ --dns-cloudflare-propagation-seconds 30 \
Reference
https://www.baeldung.com/linux/letsencrypt-renew-ssl-certificate-automatically