LOGO

MIS 腳印

記錄 IT 學習的軌跡

acme.sh 搭配 GoDaddy 自動續期 Let’s Encrypt 免費萬用憑證

在 CentOS 7 使用 acme.sh 搭配 GoDaddy API Key 的方式,來自動續期 Let’s Encrypt 免費的萬 (通) 用字元憑證 SSL/TLS,完全不需手動執行任何操作。

Let's Encrypt

使用 Let’s Encrypt 萬用字元憑證 (Wildcard Certificates) 的方式,就不用針對每個子網域申請一個對應的憑證,即可通用於所有子網域的網站,對於像本站是建置 WordPress MU 多子網域的方式,使用起來就更方便了。

GoDaddy

使用 API Key 就能自動續期憑證, 無需手動執行任何操作!

新增 API Key

前往 GoDaddy 新增 API Key:

GoDaddy 新增 API Key
GoDaddy 新增 API Key

輸入自訂的 API Key 名稱,且必須選擇「Production」:

GoDaddy 新增 API Key - 生產環境
GoDaddy 新增 API Key – 生產環境

產生 API 的 Key 與 Secret,在後續的申請憑證需要用到:

Secret 只會在這顯示而已,所以必須先複製好在關閉
GoDaddy 新增 API Key - 金鑰與私鑰
GoDaddy 新增 API Key – 金鑰與私鑰

acme.sh

安裝

使用 curl 安裝 (其它安裝方式可參考 GitHub – Neilpang/acme.sh)

[root@footmark ~]# curl https://get.acme.sh | sh

# ... 以上省略 ...

[二  3月  5 06:14:12 CST 2019] Good, bash is found, so change the shebang to use bash as preferred.
[二  3月  5 06:14:12 CST 2019] OK
[二  3月  5 06:14:12 CST 2019] Install success!

須重新登入:

[root@footmark ~]# logout

自動更新

由於 acme.sh 仍不斷在發展,因此建議讓它保持在最新的狀態。

手動更新到最新:

[root@footmark ~]# acme.sh --upgrade

啟用自動更新:

[root@footmark ~]# acme.sh --upgrade --auto-upgrade

禁用自動更新:

[root@footmark ~]# acme.sh --upgrade --auto-upgrade 0

申請憑證

將上述 GoDaddy 新增的 API Key 和 Secret 貼上並執行:

GD_KeyGD_Secret 會被保存在 /.acme.sh/account.conf,需要時會被重複使用
[root@footmark ~]# export GD_Key="A4vVBtpTEP3_53aqRx9dn3Tdwv8PZL8f5D"
[root@footmark ~]# export GD_Secret="53ayFtmvLxQ3ZwuWrkXq7y"

申請網域 (Domain) 的萬用憑證 (紅字替換成你的),成功後會顯示憑證存放的路徑:

[root@footmark ~]# acme.sh --issue --dns dns_gd -d footmark.info -d *.footmark.info

# ... 以上省略 ...

-----END CERTIFICATE-----
[二  3月  5 20:01:25 CST 2019] Your cert is in  /root/.acme.sh/footmark.info/footmark.info.cer
[二  3月  5 20:01:25 CST 2019] Your cert key is in  /root/.acme.sh/footmark.info/footmark.info.key
[二  3月  5 20:01:25 CST 2019] The intermediate CA cert is in  /root/.acme.sh/footmark.info/ca.cer
[二  3月  5 20:01:25 CST 2019] And the full chain certs is there:  /root/.acme.sh/footmark.info/fullchain.cer

安裝憑證

Nginx

新增一個保存憑證的自訂目錄 (使用網域做為目錄名稱會是不錯的方式):

[root@footmark ~]# mkdir /etc/nginx/ssl/footmark.info

將憑證複製到上述新增的目錄路徑 (紅字替換成你的),並強制重啟 Nginx:

acme.sh 每 60 天會自動重新加載這個指令來自動續期憑證,完全不需手動執行任何操作!
[root@footmark ~]# acme.sh --install-cert -d footmark.info \
--key-file       /etc/nginx/ssl/footmark.info/key.pem \
--fullchain-file /etc/nginx/ssl/footmark.info/cert.pem \
--reloadcmd     "service nginx force-reload"
[二  3月  5 20:50:52 CST 2019] Installing key to:/etc/nginx/ssl/footmark.info/key.pem
[二  3月  5 20:50:52 CST 2019] Installing full chain to:/etc/nginx/ssl/footmark.info/cert.pem
[二  3月  5 20:50:52 CST 2019] Run reload cmd: service nginx force-reload
Redirecting to /bin/systemctl force-reload nginx.service
[二  3月  5 20:50:52 CST 2019] Reload success

停止自動續期憑證

從續期列表中移除憑證 (紅字替換成你的):

憑證目錄須自行刪除,例如 ~/.acme.sh/footmark.info/
[root@footmark ~]# acme.sh --remove -d footmark.info

參考


發表迴響