+
+
  • 简体中文
  •     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」
    上一篇
    4906浏览
    0评论
    phpMyAdmin中出现配置pmadb..错误
    • 2020-04-02
    acme.sh实现了 acme 协议, 可以从 letsencrypt 生成免费的证书,可以通过http或dns的方式自动续签证书有效期。
    下一篇
    3007浏览
    18评论
    ABBYY FineReader V14.0.107.232
    • 2020-04-02
    acme.sh实现了 acme 协议, 可以从 letsencrypt 生成免费的证书,可以通过http或dns的方式自动续签证书有效期。
    发布评论 / 取消回复

    二维码

    感谢您的赞助