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

96
攒一口袋比卡丘
2018.10.31 19:08 字数 620

早上起来,jevin发来讯息,说是 Let’s Encrypt 的野卡证书到底放行上线了,有点小激动。

如许高大上的东西,一定要吃完早餐再来折腾。

之前一向用的LE的证书,因而就按部就班,率先在服务器端部署acme的申请script

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

依据官方的说明,部署终了后能使用

acme.sh *

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

~/.acme.sh/acme.sh *

依据从前使用Let’s Encrypt证书的经验,直接复制粘贴以前的command居然报错,提示 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以后持续执行申请,acmescript会使用增加的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信息会save下来,将来再次使用DNS方法认证其他域名,或者续期的时候便会主动挪用,如:

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

申请完毕后便可以使用 /root/.acme.sh/***.com/ 下的站点证书 *.cer 与密钥 *.key 增加到站点了

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

申请后acme.shscript会主动增加一条crontab按时任务,以便script主动续期,如果没有主动续期,能执行以下command

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

因为 acme 协议与 letsencrypt CA 都在频繁的更新, 因而 acme.sh 也常常更新以连结同步

#upgrade

~/.acme.sh/acme.sh --upgrade

#主动upgrade

~/.acme.sh/acme.sh --upgrade --auto-upgrade

#关闭主动upgrade

~/.acme.sh/acme.sh --upgrade --auto-upgrade 0

参考文献: https://host.fubi.hk/foreshadowinghost/zhishiku/20181026/8416.html

日记本
Web note ad 1