免費的ssl證書申請有很多渠道,但很多都需要到期重新申請。acme可以到期自動重新申請新的證書,放哪里就不用管了。
acme.sh的官方github中提供的wiki:https://github.com/acmesh-official/acme.sh/wiki/說明
安裝acme.sh
官方提供了三種常見的安裝方式。分別為:使用curl直接從get.acme.sh
在線安裝,或者在github下載,或者git克隆了項目手動安裝。
很不信,因為網絡原因,前兩種方式都直接被拒絕訪問了。我只能使用第三種,使用git clone這個項目,並安裝:
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install
如果想嘗試前兩種,可以參考官方github。
生成證書
生成證書有兩種驗證方式,http和dns。
http方式是需要在你的網站根目錄下放置一個文件, 來驗證你的域名所有權,完成驗證. 然后就可以生成證書了。
但是我的根域名另有他用,故使用第二種dns驗證。
dns驗證也分兩種,手動dns和自動dns,選擇其中一種就可。
手動dns驗證
手動dns就是在購買域名的地方手動添加acme生成的txt。使用下面的命令:
acme.sh --issue --dns -d xxxxxxx.com
然后, acme.sh 會生成相應的解析記錄顯示出來, 你只需要在你的域名管理面板中添加這條 txt 記錄即可.等待解析完成之后, 重新生成證書:
acme.sh --renew -d xxxxxxx.com
注意第二次這里用的是 --renew
自動dns驗證
dns 方式的真正強大之處在於可以使用域名解析商提供的 api 自動添加 txt 記錄完成驗證。
自動dns需要使用購買域名的網站提供的api訪問。比如阿里雲:
使用阿里雲域API自動頒發證書
首先,您需要登錄到Aliyun帳戶以獲取API密鑰。 https://ak-console.aliyun.com/#/accesskey
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
好的,讓我們現在頒發證書:
acme.sh --issue --dns dns_ali -d example.com -d www.example.com
的Ali_Key
和Ali_Secret
將被保存~/.acme.sh/account.conf
,需要時會被重用。
不同的運行商是不同的,請參考wiki,根據自己的運營商來:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
如果需要申請泛域名證書,命令為:
acme.sh --issue --dns dns_ali -d aa.com -d "*.aa.com"
使用證書
將使用的路徑指向生成的證書
以nginx舉例。
ssl_certificate /root/.acme.sh/xxxxx.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/xxxxx.com/xxxxxx.com.key;
訪問網站的時候就可以見到證書