ETH官方钱包

前往
大廳
主題

以Certbot申請用於Cloudflare DNS的Letsencrypt Wildcard憑證

Yukiarashi | 2024-10-31 19:43:12 | 巴幣 2 | 人氣 74

提醒對於任何使用或引用本篇文章資訊與操作導致之損失或損害,本人概不負責。

前言
服務越架越多,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憑證申請與設定了!
又是一篇颱風假寫出來的文章~

參考文章

創作回應

相關創作

更多創作