Ratodo

夜半观星

我的花园到处是星星的碎片
telegram
github
email
nintendo switch

acme.sh 申請證書筆記

寫在開頭#

由於一年期免費證書現在已經基本絕跡,最省時省力的方案莫過於 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 申請配置證書的全过程,附最終效果參考。

acme.1

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。