前言


Let'sEncrypt可以申请免费的证书,宝塔的SSL就是通过这个申请的。不过宝塔用的是HTTP验证,无法申请泛域名,acme.sh 实现了acme协议, 可以使用API用DNS验证从 Let'sEncrypt 生成免费的泛域名证书,并且自动续期!

安装 acme.sh

非常简单,一条命令全自动安装。

curl  https://get.acme.sh | sh

使用acme.sh生成证书

这里推荐使用DNS验证生成泛域名证书
我使用的是CloudFlareAliyun的DNS,所以使用他们的API。
更多的API可以从官方文档查看

#CF的API
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" #这里都填你自己的
export CF_Email="xxxx@sss.com"
#阿里的API
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" #这里都填你自己的
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

生成证书

同样也是一条命令轻松搞定,注意下方--dns的参数。根据官方文档来

~/.acme.sh/acme.sh --issue --dns dns_cf -d moenis.com -d '*.moenis.com'

申请完成后就会提示你证书的存放目录了。
ssl

安装证书到WEB服务器

这时证书已经可以使用了。但是官方推荐使用--install-cert的方式调用,而不是直接使用生成完的证书。这个方式的好处是会自动续期,并且自动重载web服务器的证书,我这里贴上了nginx的重载方法。Apache的可以去官方文档查看。

./acme.sh --install-cert -d moenis.com -d '*.moenis.com' \
--key-file   /www/cert/moenis/key.pem \
--fullchain-file /www/cert/moenis/cert.pem \
--reloadcmd "service nginx force-reload" \
done

这时证书就已经自动安装到指定目录了

Last modification:August 15th, 2020 at 10:31 am