提醒對於任何使用或引用本篇文章資訊與操作導致之損失或損害,本人概不負責。
前言
服務越架越多,No-ip三個免費DNS終於也不夠用了,
近期轉到Cloudflare註冊DNS,也想說不用再像原本那樣,
為每個DNS做letsencrypt的challenge,現在可以來試試申請Wildcard憑證。
但應該會有個疑問,就是透過Cloudflare的CDN Proxy不是就能帶憑證了嗎?
有個原因是看到透過CloudFlare CDN有Cache 100MB的限制,
造成有些檔案傳輸的服務容易因為限制而跳502 Bad Gateway,
但這聽說能設定Rule去bypass Cache,所以主要還是我想玩玩看XD。
環境
OS:Debian 12
1. 設定Cloudflare API Token
先開啟至如下URL,直接跳至Api token設定頁面:
如果對點開URL不放心的話,在你想設定的DNS Overview頁面右側應該也能找到
1.1 點選建立Token
1.2 接著點編輯區域 DNS右邊的建立範本
1.3 參考如下設定
*此處網上每個教學的設定都不大相同,可以先參考,有問題再來修改
1.4 點繼續至摘要,再點建立Token
就會看到Token,並且還有附上測試方式,太貼心了XD
*注意每筆Token只會在創建完成時顯示就這麼一次,所以務必保存好。
2.主機申請Wildcard憑證
開始前需要裝兩個套件
sudo apt install certbot python3-certbot-dns-cloudflare
2.1 創建隱藏資料夾
前面的cd是用來回到User home資料夾
cd ; mkdir .secret
2.2 寫入token資訊
建立並編輯cloudflare.ini檔案
vim cloudflare.ini
寫入以下資訊
dns_cloudflare_api_token = [前面取得的Cloudflare API Token]
2.3 申請憑證
接著就是申請憑證啦~,使用以下指令申請
*記得把以下指令的example.com替換成你自己的DNS
certbot certonly --dns-cloudflare --dns-cloudflare-credentials \
/root/.secrets/cloudflare.ini -d 'example.com' -d '*.example.com' \
--preferred-challenges dns-01
2.4 問題排除
原以為輕鬆過關,但是我在申請時遇到以下Error
ERROR:certbot._internal.log:Error determining zone_id: 6003 Invalid request headers. Please confirm that you have supplied valid Cloudflare API credentials. (Did you copy your entire API token/key? To use Cloudflare tokens, you'll need the python package cloudflare>=2.3.1. This certbot is running cloudflare 2.11.1)
查詢有說法是說API Token權限設定問題,所以我的權限是參考這篇文章的方式設定如果不行的話可以再找找其他文章的設定方式
-> Wildcard SSL with Cloudflare - Hatchbox.io Help Center
設定完成後又跳出新的Error
504 Server Error: Gateway Time-out for url: https://api.cloudflare.com/client/v4/zones/951b18922bd8b725588f2358cb4e824e/dns_records
但這猜測是剛好Cloudflare那端有些問題,過段時間再嘗試就順利取得憑證了
完成後使用以下指令確認憑證檔路徑和到期資訊
certbot certificates
到這裡就可以在自己的環境設定申請下來的憑證測試啦!(歡呼
3. 設定憑證自動更新
3.1 先來跑一下renew,確認會不會有Error
certbot renew
3.2 確認沒問題就來設定Cron job,定時去renew
crontab -e
寫入排程,我是指定每月1號凌晨2點進行renew
*--quiet是執行後不輸出資訊
00 02 01 * * /usr/bin/certbot renew --quiet
如果對Crontab時間設定方式不是很熟悉的話,可以試試用這個:
這樣就完成了Cloudflare DNS的Letsencrypt Wildcard憑證申請與設定了!
又是一篇颱風假寫出來的文章~
參考文章