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用户是否还有其他解决办法。