Let's Encrypt 通配符域名证书申请以及自动更新


今年3月份,Let’s Encrypt宣布支持通配符域名证书的申请(链接),
但是通配符域名的申请的验证方式只支持添加DNS TXT记录验证,这样就不能向之前一样用简单的定期执行一个renew命令就可以自动更新了,想要实现自动更新必须依赖与dns厂商的api

ACME客户端选择

ACME是Let’s Encrypt为了实现自动化证书管理而定的协议,有很多客户端实现了这个协议(链接)
cerbor和acme.sh这2个应该是使用人数最多的2个客户端
比较:

  1. certbot 它的dns plugs暂时没有支持国内的dns厂商,需要手动登陆后台添加TXT记录,而且cerbot需要python支持
  2. acme.sh 支持国内的阿里云和dnspod,并且自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书

使用acme.sh创建证书

注意 *.yourdomain.com 不包含 yourdomain.com

以dnspod为例子,其他厂商查看(链接)

  1. wget -O - https://get.acme.sh | sh
  2. export DP_Id="123456"
  3. export DP_Key="abcdefghijk"
  4. acme.sh --installcert --issue --dns dns_dp -d yourdomain.com -d *.yourdomain.com \
  5. --key-file /etc/nginx/ssl/yourdomain.com.key \
  6. --fullchain-file /etc/nginx/ssl/fullchain.cer \
  7. --reloadcmd "service nginx force-reload"

修改nginx

  1. ssl_certificate /etc/nginx/ssl/fullchain.cer;
  2. ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;