透過 acme.sh 產生 HTTPS 憑證。
什麼是 acme.sh?
acme.sh 是一個開源 Shell 腳本,用於自動產生和管理 HTTPS 憑證。
安裝
curl https://get.acme.sh | sh -s [email protected]
安裝後,acme.sh 將出現在您的主目錄中。
~/.acme.sh
執行以下命令使acme.sh的環境變數生效。
source ~/.basrc
生成证书
在產生憑證之前,acme.sh 需要驗證您對網域的所有權。驗證方式有以下幾種:
HTTP 驗證
Apache
如果您使用的是 Apache 伺服器。
acme.sh --issue -d mydomain.com --apache
Nginx服务器
如果您使用的是 nginx 伺服器。
acme.sh --issue -d mydomain.com --nginx
將檔案新增至網站根目錄。
你也可以告訴acme.sh你網站的根目錄,acme.sh會自動加入一個檔案來驗證。
acme.sh --issue -d mydomain.com --webroot /path-to-the-webroot-of-the-site
DNS 驗證
手動添加記錄
执行命令
acme.sh --issue --dns -d mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
然后,acme.sh 會產生對應的解析記錄並顯示。您只需在網域管理面板中新增此 TXT 記錄即可。
然后重新生成证书
acme.sh --renew -d mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
透過 DNS 服務提供者 API 進行驗證。
這應該是最常用和推薦的驗證方式。以CloudFlare為例,請參考https://github.com/acmesh-official/acme.sh/wiki/dnsapi 用於申請其他服務提供者的證書。
申請API。
您可以在Cloudflare个人资料页面的全局API密钥下获取您的全局API密钥。API令牌部分。點擊全域 API 金鑰旁邊的“檢視”,驗證您的 Cloudflare 密碼,它將顯示給您。它是一個 32 個字元的十六進位字串,您必須透過設定環境變數將其提供給 acme.shCF_Key
到它的價值。您還必須設定CF_Email
發送至與您的 Cloudflare 帳戶關聯的電子郵件地址;這是您登入 Cloudflare 時輸入的電子郵件地址。例如:
export CF_Key="763eac4f1bcebd8b5c95e9fc50d010b4"
export CF_Email="[email protected]"
產生證書。
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
查看证书文件
證書產生後,您可以造訪~/.acme.sh/mydomain.com_ecc查看證書檔案。fullchain.cer
是证书文件和mydomain.io.key
是私鑰檔案。它們都是文字文件,可以在網站配置過程中上傳到 i18n.so。
acme.sh使用過程中的常見問題
CA
acme.sh 現在預設使用 ZeroSSL 作為 CA,但經常遇到可訪問性問題。您可以使用以下命令將 CA 切換到 Let's Encrypt。
acme.sh --set-default-ca --server letsencrypt
產生通配符域憑證。
假设您想申请适用于的证书example.com
和*.example.com
,您可以使用下列命令產生通配符域憑證。
acme.sh -d example.com -d *.example.com
证书续期
acme.sh產生憑證後,會新增一個crontab定時任務,定期更新憑證。可以使用以下指令查看定時任務,更新的內容也保存在~/.acme.sh/mydomain.com_ecc
。
crontab -e