寫在開頭#
由於一年期免費證書現在已經基本絕跡,最省時省力的方案莫過於 acme.sh 自動部署更新。雖然我的目前大多數服務以及跑在了無伺服器系統上,但透過一個自動程序來隨時獲得有效的網站證書,還是有一定必要性。
若像我一樣均採用 Cloudflare 的服務,可以在 Cloudflare 的儀表盤中生成 15 年有效期的自簽證書,可透過 Cloudflare 系統的 https 驗證,無需部署公共 CA 證書,公共 CA 證書系統會幫助自動申請,目前的提供商是 GTS 和 Sectigo。
以下簡單記錄下在申請過程中的一些步驟和注意點。
acme.sh Project
安裝並設置#
安裝 acme.sh#
curl https://get.acme.sh | sh -s email=my@example.com
設置 alias 以便快速啟動#
echo "alias acme.sh='~/.acme.sh/acme.sh'" >> ~/.bashrc
source ~/.bashrc
測試是否安裝成功#
acme.sh --version
成功返回版本即為安裝成功
設置默認申請郵箱#
acme.sh --register-account -m your-email@example.com
請將 your-email@example.com 替換為你要設置的郵箱地址,設置完成後,後續的證書申請都會默認使用該郵箱。
選擇申請證書的機構#
根據官方文檔,目前 acme 支持五家 SSL 證書發行商,分別是:
- ZeroSSL.com CA (默認)
- 支持多域名 & 泛域名,有效期 90 天
- 上級 CA:Sectigo (USERTrust ECC Certification Authority)
- Letsencrypt.org CA
- 支持多域名 & 泛域名,有效期 90 天
- 上級 CA:ISRG (ISRG Root X1)
- BuyPass.com CA
- 支持多域名 (單證書內最多 5 個),有效期 180 天
- 上級 CA:Buypass (Buypass Class 3 Root CA)
- SSL.com CA
- 僅支持單域名,需註冊,有效期 90 天
- 上級 CA:SSL.com (SSL.com Root Certification Authority RSA R2)
- Google.com Public CA
- 支持多域名 & 泛域名,有效期 90 天
- 上級 CA:GTS (GTS Root R4)
綜上建議選擇默認的 ZeroSSL/Let’s Encrypt/GTS,自動續簽且支持多域名 & 泛域名,一次申請一勞永逸。
證書機構切換#
acme.sh --set-default-ca --server zerossl
其中 —server 後表示要切換到的機構,可選項為:
- zerossl/letsencrypt/buypass/google/ssl.com
以下申請步驟以 ZeroSSL 為例,使用 Cloudflare DNS API。
配置 Cloudflare DNS API#
獲取 API 密鑰步驟:
1. 登錄到 Cloudflare Dashboard。
2. 轉到 My Profile。
3. 在 API Tokens 下,創建一個帶有 DNS 編輯權限的 API 令牌,或使用 Global API Key。
填入下列代碼中,終端運行。
export CF_Token="你的Cloudflare_API_Token"
同時也支持多家 DNS 服務商,詳見Github。
申請證書#
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
申請 examle.com 及 *.example.com 兩個域名的證書,可根據需要自行修改,新增域名在後面繼續加入 - d 域名即可。
若需指定證書機構,加入 —server 選項即可。
acme.sh --issue --dns dns_cf -d example.com --server zerossl
安裝證書#
根據自己網站伺服器版本選擇相應的代碼安裝,以下以 Apache 為例:
acme.sh --install-cert -d example.com \
--key-file /path/to/your/domain.key \
--fullchain-file /path/to/your/domain.cer \
--reloadcmd "service apache2 reload"
以上部分的域名及路徑請手動修改,路徑在上一步申請完成證書後會反饋。
設置定期更新#
acme.sh --renew -d example.com --force
後續即可自動完成證書更新,無需人為干預。
以上,就是 acme.sh 申請配置證書的全过程,附最終效果參考。