使用 Let’s Encrypt Wildcard 萬用字元憑證
2018/01 後, Let’s Encrypt 推出 ACME v2 API 可以支援 Wildcard Certificates
使用 Wildcard Certificates 可以用一個憑證保護 base domain 下的數個 subdomain
在 Examples for DNS 01 hooks 這些別人包好的 script 裡面找到對應你使用的 DNS 服務
筆者使用 godaddy 所以用的是 le-godaddy-dns 這套
vps 環境: Ubuntu 16.04
安裝步驟:
安裝 python 的 dependencies
$ sudo apt-get install python3 python3-pip curl
設定 workplace
$ ROOTDIR=$HOME/letsencrypt $ mkdir -p $ROOTDIR $ cd $ROOTDIR
安裝所需 plugin
# get letsencrypt.sh $ git clone https://github.com/lukas2511/dehydrated # get le-godaddy-dns $ git clone https://github.com/josteink/le-godaddy-dns $ cd $ROOTDIR/le-godaddy-dns $ python3 -m pip install -r requirements.txt --user
設定 dehydrated 的 domain.txt
# configure dehydrated $ cd $ROOTDIR/dehydrated $ vim domains.txt 在裡面填入需要設定的 domain, 可參考 https://github.com/lukas2511/dehydrated/blob/master/docs/domains_txt.md 筆者的需求使用是 dd3.today *.dd3.today
設定 dehydrated 的 config
$ vim $ROOTDIR/dehydrated/config 找到這行並改成 yes, 沒有的話自行手動加入 HOOK_CHAIN="yes"
設定 key、secret 並執行
# configure your API keys export GD_KEY=填入 API KEY export GD_SECRET=填入 API SECRET # ./dehydrated --challenge dns-01 -k $ROOTDIR/le-godaddy-dns/godaddy.py -c
最後成功的樣子
設定自動更新憑證
在
/etc/cron.weekly/
下新增一個檔案, 檔案權限記得要開成 755$ cd /etc/cron.weekly/ $ touch update-dd3-dehydrated $ chmod 755 update-dd3-dehydrated $ vim update-dd3-dehydrated
檔案內容如下 (
/root/letsencrypt/dehydrated/dehydrated
跟root/letsencrypt/le-godaddy-dns/godaddy.py
要改成你自己安裝的路徑)#!/bin/bash export PATH=/usr/sbin:/usr/bin:/bin:"${PATH}" sleep $(expr $(printf "\%d" "0x$(hostname | md5sum | cut -c 1-8)") \% 86400); ( /root/letsencrypt/dehydrated/dehydrated --challenge dns-01 -k /root/letsencrypt/le-godaddy-dns/godaddy.py -c; service nginx reload ) > /tmp/dehydrated-dd3.today.log 2>&1
godaddy 的 key 放在
/etc/environment
下$ vim etc/environment export GD_KEY=填入 API KEY export GD_SECRET=填入 API SECRET