acme.sh自動配置免費SSL泛域名證書并續期(Aliyun + Debian + nginx)
以前使用Certbot自動配置SSL證書,需要安裝snap管理器再安裝Certbot,期間還要去找AliDNS腳本,比較麻煩。如果不想如此,推薦使用acme.sh自動化腳本,更方便快捷。
1. 安裝acme.sh
curl https://get.acme.sh | sh -s email=你的郵箱名@郵箱.com
腳本會安裝home目錄下:~/.acme.sh/。同時會創建一個cronjob,每天檢測證書,快過期自動更新。
2. 更換證書提供商CA
默認使用ZeroSSL提供證書,可以切換到Letsencrypt:
acme.sh --set-default-ca --server letsencrypt
當然,不換也行,ZeroSSL也能用。
3. 添加阿里云域名證書
注意泛域名證書不支持主域名,如".example.com"證書不支持"example.com"
如果不使用泛域名,有多種添加證書的方法(前提是你得有)。如:
- 使用獨立服務器頒發證書
- 使用Standalone ssl服務器頒發證書
- 使用Apache模式
- 使用Nginx模式
- 使用自動DNS API集成模式
- 使用DNS手動模式
但使用泛域名,只能使用DNS API模式,且會自動更新,最為推薦:
# 先添加阿里云Aliyun的DNS api密鑰到臨時環境變量
export Ali_Key="你的Aliyun Api Key"
export Ali_Secret="你的Aliyun Ali_Secret"
# 注冊域名和泛域名證書,默認ECC證書為ec-256
acme.sh --issue --dns dns_ali -d 'example.com' -d '*.example.com'
# 上面的臨時變量,在添加證書后,會保存在account.conf中,后續不需要再指定
4. 將證書安裝到Apache/Nginx等
生成證書后,您可能希望將證書安裝/復制到您的Apache/Nginx或其他服務器。
您必須使用此命令將證書復制到目標文件,請勿使用~/.acme.sh/文件夾中的證書文件,它們僅供內部使用,文件夾結構將來可能會更改。
acme.sh --install-cert -d 'example.com' \
--key-file /etc/acme/ssl/example.com/example.com.key \
--fullchain-file /etc/acme/ssl/example.com/example.com.crt \
--reloadcmd "service nginx force-reload"acme.sh --install-cert -d '*.example.com' \
--key-file /etc/acme/ssl/example.com/wildcard.example.com.key \
--fullchain-file /etc/acme/ssl/example.com/wildcard.example.com.crt \
--reloadcmd "service nginx force-reload"
5. 配置你的Apache/Nginx
自行修改Apache/Nginx配置,指定SSL證書到上一步的路徑。
6. 更新acme.sh
目前由于acme協議和letsencrypt CA都在頻繁的更新, 因此acme.sh也經常更新以保持同步。升級acme.sh到最新版:
acme.sh --upgrade
如果你不想手動升級, 可以開啟自動升級:
acme.sh --upgrade --auto-upgrade
之后, acme.sh 就會自動保持更新了。
你也可以隨時關閉自動更新:
acme.sh --upgrade --auto-upgrade 0
7. 其它和卸載
acme.sh支持–help幫助,自行處理。