使用acme.sh签发Let's Encrypt通配符证书

12小时前,Let's Encrypt发文称,在经过一系列调整后,正式的ACMEv2后端以及通配符证书已被支持。

acme.sh已支持测试版ACMEv2协议及通配符证书,如今只需去掉命令行中的--test便可签发有效证书。

通配符证书对应域名的所有权无法在通过HTTP进行验证,故ACMEv2采用DNS来验证申请者对域名的所有权,为此需要对该顶级域名添加一条TXT DNS记录。为提高自动化程度,acme.sh和CertBot等支持ACMEv2的工具利用DNS服务商的API来添加与(完成验证后)删除DNS记录。

本文以CloudFlare和acme.sh为例。


首先,我们需获取Cloudflare的API Key,并于Cloudflare账号所对应的E-Mail一并导出为环境变量。登录Cloudflare账户后,访问https://www.cloudflare.com/a/profile ,点击Global API Key一栏的View API Key获取API Key。

$ export CF_Key="$API_KEY"
$ export CF_Email="$Corresponding_Email"
// 安装acme.sh
$ git clone https://github.com/Neilpang/acme.sh
$ cd acme.sh
$ ./acme.sh --install
$ cd ..
// 申请证书
$ acme.sh --issue --dns dns_cf -d domain1.tld -d *.domain1.tld -d domain2.tld -d sub1.domain2.tld -d *.sub1.domain.tld
// 销毁环境变量
$ unset $CF_Key
$ unset $CF_Email

还可以对acme.sh添加任何被支持的其他参数,如-k ec-256可签发使用P-256的ECDSA证书。