使用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证书。