使用acme.sh脚本申请Let’s Encrypt免费泛域名证书

Linux, 折腾 2018/03/14

早上起来,jevin发来消息,说是 Let’s Encrypt 的野卡证书终于开放上线了,有点小激动。

如此高大上的东西,必然要吃完早饭再来折腾。

之前一直用的LE的证书,所以就按部就班,首先在服务器端安装acme的申请脚本

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

根据官方的说明,安装完毕后可以使用

acme.sh *

这样的命令执行申请,但是部分环境可能会遇到 acme.sh: command not found 的情况,这时只要使用绝对路径就行

~/.acme.sh/acme.sh *

根据以往使用Let’s Encrypt证书的经历,直接复制粘贴以前的命令居然报错,提示 The supported validation types are dns-01,but you specified http-01

好吧,意思是不能使用HTTP认证域名,需要改用DNS认证的方式,对需要申请证书的域名添加一条txt记录以便认证

好在amce.sh支持各种DNS服务商的API,如cloudflare, dnspod, cloudxns, godaddy,这里以dnspod为例,申请API

申请API之后继续执行申请,acme脚本会使用添加的API自动在DNS服务商处对域名添加TXT记录

export DP_Id="申请的API ID"
export DP_Key="申请的API Key"
 ~/.acme.sh/acme.sh  --issue  --dns dns_dp  -d *.bugxia.com

执行过程中需要等待120秒,以便TXT记录生效,最后即是申请成功

需要注意的是:这里指定的API信息会保存下来,将来再次使用DNS方式认证其他域名,或者续期的时候便会自动调用,如:

acme.sh --issue -d xxxxxx.com --dns dns_dp

申请结束后就可以使用 /root/.acme.sh/***.com/ 下的网站证书 *.cer 和密钥 *.key 添加到网站了

有些程序如腾讯云的CDN,需要使用合并证书 fullchain.cer ,这里不再记录。

申请后acme.sh脚本会自动添加一条crontab定时任务,以便脚本自动续期,如果没有自动续期,可以执行以下命令

~/.acme.sh/acme.sh --renew --dns dns_dp -d *.bugxia.com

由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步

#升级
~/.acme.sh/acme.sh --upgrade
#自动升级
~/.acme.sh/acme.sh --upgrade --auto-upgrade
#关闭自动升级
~/.acme.sh/acme.sh --upgrade --auto-upgrade 0

 

本文标签:


4 条评论

  • Bug侠 评论于 回复

    :嘴锤: :嘴锤: :嘴锤: :嘴锤: :嘴锤:

  • jevin 评论于 回复

    我今年DV到期,也上这个了。

    • Bug侠 评论于 回复

      @jevin
      AJAX评论和通知搞好了,试试看能不能收到~

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)