使用 certbot 取得 免費 SSL Wildcard 憑證

假設我有一個網域,上面有很多個子域名,在現在沒有SSL無法受到google關愛的眼神。
certbot就是一個很好用的工具
搭配Let’s Encrypt 免費的SSL
其實,可以買足90%以上的需求
Certbot自動模式可以一次滿足所有的子域名需求
100個域名之內,可以使用一張憑證處理
但是所有的簽署域名都是在憑證上出現
這個看起來好像不是這麼的「專業」

系統需求
1.DNS Service
我用的是CloudFlare
2.Linux Server
3.Apache / NGINX 服務

第零步,安裝certbot
sudo apt-get update
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

第一步 準備進行授權,在CLI 命令行執如是指令
certbot certonly –manual –agree-tos \
-d “*.你的域名.com” \
-d 你的域名.com \
–email 你的信箱 \
–preferred-challenges dns \
–manual-public-ip-logging-ok \
–server https://acme-v02.api.letsencrypt.org/directory \
–rsa-key-size 4096

–rsa-key-size 4096 預設的key長度是2048,如果需要,可以生成4096的長度

第二步 驗證DNS
過程中會要求進行DNS驗證
在DNS中新增一組TXT
NAME 是 _acme-challenge
VALUE 是一組亂碼
新增好,靜待生效
因為我是用CloudFlare
大約一分鐘內就生效了
可以使用dig指令來驗證
dig TXT _acme-challenge.你的域名.com
正確無誤,就會出現設定的那個亂碼
確定無誤就可以完成驗證了
後面會有憑證的路徑

第三步 修改 nginx 並 reload
在 nginx 中新增
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/SSL存放路徑/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/SSL存放路徑/privkey.pem;

都修改好之後,執行下面指令
systemctl reload nginx
沒有出現錯誤,就可以開瀏覽器來確認

第四步 確認證憑證
確認發證無誤
SSL_Let's Encrypt 免費 SSL 憑證
確認是Wildcard憑證無誤
確認效期無誤(90天免費,可以無限續約)
免費全域名型的SSL無誤,效期90天無誤

第五步 設定自動renew SSL
效期只有90天,到期前30天可以更新憑證
指令如下
crontab -e
新增
10 4 * * * certbot renew
我是設定早上4:10 自動更新
如果還沒有需要更新,會出現下面的字樣
Cert not yet due for renewal

說在最後,我的Proxmox VE / Openmediavault 都加好SSL
配合 CloudFlare DDNS 服務,好用自然不在話下

參考文章
Rate Limits
Let’s Encrypt Wildcard 申請流程
解析 Certbot(Let’s encrypt) 使用方式

20220207 昨天是照官方文件使用Web匯入SSL 憑證
官方文件說,有支援let’s encrypt的憑證直接匯入
可以直接用,不用像ssh需要轉換(昨天查到的方式也是直接貼沒有錯)
但是好像也只能透過Web Gui
不能像nginx 複製憑證後直接reload
文章出處:Certificates

20220709 certbot 自動更新又失敗了
每三個月搞一次,老實說有一點煩
再來看看吧,如果真的受不了
看看是不是要改用其他的方式取得授權

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。