欧阳简之 > 使用acme.sh实现Let's Encrypt免费证书自动申请与续订,支持通配符域名!

热爱代码,对每一行代码保持一颗敬畏之心。

目前市场上免费证书很多,但大多都是单域名证书,如果存在多个子域名时,就比较麻烦了。

Let's Encrypt免费证书支持通配符证书,但是有效期只有三个月,到期需要续订,也是比较麻烦的,然后发现了一个好东西:acme.sh,可以轻松实现申请及自动续订!

acme.sh是通过域名DNS服务器商提供的API完成自动解析验证的,支持的DNS大部分是国外的,国内我们就以阿里为例,所以域名DNS可以先改成阿里的。

您可以安装acme.sh后在dnsapi目录查看支持的DNS列表,厉害的话自己写一个可以是可以的。

关于acme.sh

ACME全称The Automatic Certificate Management Environment,而acme.sh这个库,则能够在Linux上实现如下功能:

  1. 自动向Let's Encrypt申请证书;
  2. 自动调用各大云平台的api接口实现TXT解析配置;
  3. 证书下发后自动部署到nginx;
  4. 利用定时器,每60天自动更新证书,并完成自动部署。

安装acme.sh

系统环境:CentOS Linux release 7.4 (Core)

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

a1.jpg

这个自动安装过程完成了以下几个步骤:

  1. 拷贝sh脚本到~/.acme.sh/
  2. 创建alias别名acme.sh=~/.acme.sh/acme.sh
  3. 启动定时器

配置阿里云解析

运行如下命令,配置阿里云api接口的key和secret,其中的值需要到阿里云控制台中去寻找。

export Ali_Key="dsfasdfsdafdcxf"
export Ali_Secret="fasdfdsafwefdsfasdfsdafsdafsdf"

这两个配置将永久保存在文件~/.acme.sh/account.conf中

为域名申请证书

运行如下命令,一键申请证书。

~/.acme.sh/acme.sh --issue --dns dns_ali -d *.oyjz.cn

a3.jpg

证书申请成功后,保存在~/.acme.sh/*.oyjz.cn目录下

将证书部署到nginx

~/.acme.sh/acme.sh --install-cert -d *.oyjz.cn \
  --key-file       /data/app/nginx/conf/nginx/key.key  \
  --fullchain-file /data/app/nginx/conf/cert.pem \
  --reloadcmd     "systemctl reload nginx.service"

a4.jpg

该命令中的参数将自动保存在~/.acme.sh/www.example.com目录下的www.example.com.conf文件里,定时器更新证书的时候实现自动部署。

配置nginx

tagged by none