1、安裝acme.sh
curl https://get.acme.sh | sh
2、獲取 Let’s Encrypt 證書
acme.sh --issue --standalone -d example.com # example.com是你要申請證書的域名
如果報錯acme.sh命令不存在,執行source ~/.bashrc命令試試
一般是acme.sh是安裝在~目錄下的.acme.sh文件夾中,可能會提示你沒有安裝socat,yum install socat真能裝一下即可,如果不是root用戶,則:
sudo ~/.acme.sh/acme.sh --issue --standalone -d example.com
運行成功後會提示你的證書在哪個目錄下,我的是提示在root/.acme.sh/example.com/example.com.key
3、安裝acme.sh證書
官方:
acme.sh --installcert -d www.jiangyong.org \
--key-file /etc/nginx/ssl/www.jiangyong.org.key \
--fullchain-file /etc/nginx/ssl/www.jiangyong.org.cer \
--reloadcmd "service nginx force-reload"
我的:
sudo ~/.acme.sh/acme.sh --installcert -d example.com \
--keypath /your/path/example.com.key \
--fullchainpath /your/path/example.com..cer
這裏加不直接寫acme.sh,而寫成sudo ~/.acme.sh/acme.sh是有原因的,因爲我裝的acme.sh不是root權限寫裝的,所以生成的證書就不在安裝的按個目錄,而是在root下的一個目錄下,所以這樣寫才能將真正的證書安裝到你所需要的目錄。
注意:
因爲acme.sh腳本默認使用的80端口,所有當在申請證書的時候請確保80端口沒有被佔用,並且防火牆開放了80端口。
參考文章:https://deepzz.com/post/acmesh-letsencrypt-cert-auto-renew.html
新增經驗(2019/08/13):
https://github.com/Neilpang/acme.sh
如果你是最新下載安裝acme.sh的話,可能會碰到以下問題:
~/.acme.sh/acme.sh --issue --standalone -d example.com執行此命令可能會報錯需要安裝socat,然後你用socat安裝之後再次執行,可能會報錯:
說明你的權限還不夠,需要root權限,此時你就會聰明的在命令前面加上sudo,然而你會發現下面的奇葩報錯:
然後你就會去訪問這個網址:https://github.com/Neilpang/acme.sh/wiki/sudo,它就會告訴你不要用sudo。此刻,只有一個解決辦法,那就是登陸root用戶再運行上面的命令,是的,然後你就成功了!
最近似乎新增了一個方法就是在命令最後加上--force,就可成功!
主要是因爲acme.sh腳本的作者修改了原來的腳本,加了判斷,有興趣和時間的可以研究一下作者爲啥要這麼幹,除了登陸root用戶是否還有其他解決辦法。