类别:Linux / 日期:2020-04-02 / 浏览:1818 / 评论:0

    acme.sh实现了 acme 协议, 可以从 letsencrypt 生成免费的证书,可以通过http或dns的方式自动续签证书有效期。

使用acme.sh申请LetsEncrypt通配符证书  acme letsencrypt dnspod ssl crontab 通配符 证书 第1张

    常规操作看github上的说明即可,这里主要说一下我个人的部署方式。基本的思路就是 自定义证书路径-->自定义签发邮箱-->自定义签发标识-->自定义证书续签-->自定义目录部署,因为所属的环境不同,所以很难做到直接用acme.sh自动签发部署,下面就说下我的处理方法。

    首先是安装acme.sh客户端,按照官方给的文档定义了三个地方,分别是证书路径,签发邮箱跟签发标识,如下:

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install  \
--config-home /www/wwwroot/key/acme \
--accountemail  "zhbogie@gmail.com" \
--useragent  "wildcard"

    由于V3版本的acme.sh使用了Zerossl作为默认(CA)证书颁发机构。因此在颁发新证书之前需要进行(一次性)帐户注册。如下

acme.sh  --register-account  -m zhbogie@gmail.com --server zerossl

    然后是自动签发所需要的环境,我这里选择dns,运营商则是dnspod。虽然官网几乎覆盖了所有dns运营商,但是这里我还是强烈推荐dnspod,例如阿里云的api调用就会出问题,也不考虑去做修改,因为我怕以后官方更新之后会覆盖我的修改的文件。

    从dnspod获取到id跟key之后,在系统配置内添加永久变量,如下:

# vi /etc/profile
export DP_Id="100000"
export DP_Key="10000000000000000000000000"

    完成这一步就可以开始签发证书了,方式如下:

/root/.acme.sh/acme.sh --issue --dns dns_dp -d '*.onx8.com' -d onx8.com

    等操作完成之后,证书会被保存在我们安装时填写的/www/wwwroot/key/acme/路径内,至此签发完成。那么就是考虑续签的问题了。根据官方文档得知续签命令如下:

/root/.acme.sh/acme.sh --renew-all

    由于官方默认安装时,会在计划任务里面添加自动更新的命令(听说失误率很高),所以这里我们要修改一下这条命令,修改如下:

# crontab -e
#0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
0 0 * * * "/root/.acme.sh"/acme.sh --renew-all > /dev/null

    到此为止,证书每天凌晨都将会自动续签,剩下的就是部署的问题了。以下是我给出来的参考例子,你们可以根据自行情况进行修改。

mv /www/wwwroot/key/acme/*.onx8.com/*.onx8.com.key /www/wwwroot/key/acme/*.onx8.com/privkey.pem &> /dev/null
mv /www/wwwroot/key/acme/*.onx8.com/fullchain.cer  /www/wwwroot/key/acme/*.onx8.com/fullchain.pem &> /dev/null
\cp -r -a /www/wwwroot/key/acme/*.onx8.com/privkey.pem /www/server/panel/vhost/cert/www.onx8.com/privkey.pem &> /dev/null
\cp -r -a /www/wwwroot/key/acme/*.onx8.com/fullchain.pem /www/server/panel/vhost/cert/www.onx8.com/fullchain.pem &> /dev/null
sleep 3
mv /www/wwwroot/key/acme/*.onx8.com/privkey.pem /www/wwwroot/key/acme/*.onx8.com/privateKey.pem &> /dev/null
mv /www/wwwroot/key/acme/*.onx8.com/fullchain.pem /www/wwwroot/key/acme/*.onx8.com/certificate.pem &> /dev/null
\cp -r -a /www/wwwroot/key/acme/*.onx8.com/privateKey.pem /www/server/panel/ssl/privateKey.pem &> /dev/null
\cp -r -a /www/wwwroot/key/acme/*.onx8.com/certificate.pem /www/server/panel/ssl/certificate.pem  &> /dev/null

    大致的思路就是将现有的证书修改为对应的名字,在进行强制覆盖,当然这些操作都是丢弃响应日志的。将上面的命令做成一个脚本放在凌晨证书更新之后即可,在此郑重感谢acme还有LetsEncrypt为我们这些穷b创造了如此大的福祉。

    最后要说明的是,这是二级通配符,并不支持三级泛解析!至少截止当前V2版本是这样的。

赞助

感谢您的打赏~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文使用「署名-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议 / Article Use Creative Commons Attribution-ShareAlike 4.0 International License「CC BY 4.0」

 可能感兴趣的文章

伤心叹戈

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。