一、簡介
LetsEncrypt是一個免費、自動、開放的證書頒發機構。
acme.sh 實現了 acme 協議, 可以從 LetsEncrypt 生成免費的證書。
本文介紹如何使用acme.sh來簽發並自動續期LetsEncrypt免費SSL證書。
二、安裝
安裝acme.sh,只需要一條命令
curl https://get.acme.sh | sh
alias acme.sh=~/.acme.sh/acme.sh
使用DNS方式驗證 ,本文以CloudXNS(此服務商已經停止為免費用戶提供dns服務,建議使用阿里雲的雲解析dns,方法同理)為例,其他DNS服務商見文章結尾
事實上,acme.sh支持http方式和DNS方式驗證域名所有權,但考慮到有時會失效和部分用戶服務器無web服務,此處使用DNS驗證方式。
1.驗證域名
登錄DNS控制台,進入API管理頁面(不同DNS服務商的頁面不同,見文章結尾),記錄下API信息
導入API信息到acme.sh,運行命令
export CX_Key="1234" export CX_Secret="sADDsdasdgdsf"
2.簽發證書
[1]簽發指定域名,如example.com,運行命令
acme.sh --issue --dns dns_cx -d example.com -d www.example.com --reloadcmd "/nginx/nginx/sbin/nginx -s reload"
#簽發ECC證書請使用以下命令
acme.sh --issue --dns dns_cx -d example.com -d www.example.com --keylength ec-256 --reloadcmd "/nginx/nginx/sbin/nginx -s reload"
[2]簽發泛域名,運行命令
acme.sh --issue --dns dns_cx -d example.com -d *.example.com --reloadcmd "/nginx/nginx/sbin/nginx -s reload"
#簽發ECC證書請使用以下命令
acme.sh --issue --dns dns_cx -d example.com -d *. example.com --keylength ec-256 --reloadcmd "/nginx/nginx/sbin/nginx -s reload"
請注意:reloadcmd非常重要,--reloadcmd "" 中為重啟對應服務命令,如上為博主自己服務器上重啟nginx服務命令。如果沒有正確的“reloadcmd”,證書可以自動續訂,但是證書可能無法刷新到您的服務器(如nginx或apache),那么您的網站將無法在60天內顯示續訂證書。
保持最新的acme
acme.sh --upgrade --auto-upgrade
請注意,命令中export CX_Key、export CX_Secret、–dns dns_cx為CloudXNS的參數,請根據你的服務商修改
各大DNS商API獲取方法請參考官方文檔(本教程在第三點,阿里雲在第11),如下:
https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md
https://github.com/Neilpang/acme.sh/wiki/dnsapi
簽發成功!
默認新簽發的證書路徑為: /root/.acme.sh/簽發的域名/ 目錄下。
另外有standalone生成ssl證書的方式,請參考 https://www.cnblogs.com/007sx/p/11370713.html