使用 acme.sh + Cloudflare 申請免費 Wildcard SSL (Let’s Encrypt)

還記得之前申請 Let’s Encrypt Wildcard SSL 的時候總需要手動修改 DNS 紀錄才能生效,現在有了 acme.sh 以後,搭配 Cloudflare 所提供的 API Key,目前已經可以全自動排程申請,acme.sh 會使用 Cloudflare API 來幫你修改 dns 紀錄, 因為已經透過 DNS txt 紀錄來驗證所有權,已經不需要 HTTP 的模式來驗證了。因此私有 IP 的主機也可以開心使用 SSL 了。

在此使用的是 CentOS 7.5

acme.sh

安裝方法參考 acme.sh 的 Github

curl https://get.acme.sh | sh
wget -O -  https://get.acme.sh | sh

等他跑完就安裝好了,我使用 root 帳號執行,所以會安裝在 /root/.acme.sh/

acme.sh

acme.sh

 

Cloudflare

登入你的 Cloudflare 後,進入

https://dash.cloudflare.com/profile

把你的 Global Key 複製起來:

Cloudflare API Key

Cloudflare API Key

 

申請 Wildcard SSL

把下面這個 script 改成你自己的網域,我習慣存成 shell script 放在一個資料夾內使用:

export CF_Key="Your_CloudFlare_API_Key"
export CF_Email="[email protected]"

/root/.acme.sh/acme.sh --issue -d "*.YourDomainName.com" -d "YourDomainName.com" --dns dns_cf \
--cert-file /etc/pki/tls/certs/wildcard.YourDomainName.com.crt \
--key-file /etc/pki/tls/private/wildcard.YourDomainName.com.key \
--fullchain-file /etc/pki/tls/certs/wildcard.YourDomainName.com-chain.crt \
--ca-file /etc/pki/tls/certs/wildcard.YourDomainName.com-ca.crt \
--reloadcmd "systemctl reload nginx" # 如果是用 Apache 請自己修改

 

執行下去…,就結束啦!

acme.sh wildcard 成功

acme.sh wildcard 成功

 

如此一來,再也不需要讓機器架設 HTTP 了,若是多台主機,還可以用 rsync 進行同步,只需要一台執行申請的工作,而且這個腳本會自動加入 crontab 之中,之後也不需要手動去更新。感謝 acme.sh 這個方便的工具!


See also

comments powered by Disqus