首先是通过webroot方式,进行泛解析证书续期是不允许的。
因为泛解析证书必须使用dns或者webserver模式。
安装nginx或者apache插件,又要重启、又要自动更新虚拟主机的配置文件,确实很麻烦,暂且弃用。
certbot可以使用dns插件来进行dns模式的证书配置。
我自己使用的是dnspod的域名解析。dnspod支持token令牌访问它的api进行dns记录增删。
但是certbot官方没有认证的dns插件支持dnspod,我们使用一个python写的插件。
首先来安装这个插件,需要用到pip进行安装。
安装pip的命令
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
如果系统的python是2.7版本的。就需要通过上述命令安装匹配的pip。
如果是其他版本,在主站上选择对应版本。
执行安装:
python get-pip.py
#查看版本
pip -V
#执行更新
pip install --upgrade pip
#安装dnspod的certbot插件
pip install certbot-dns-dnspod
安装结束后,需要到dnspod申请一个token令牌。
https://console.dnspod.cn/account/token/token
到上述链接申请你自己的token。然后我们在certbot目录中写一个配置文件
vim /etc/letsencrypt/dnspod.conf
#配置自己申请的账户信息
certbot_dns_dnspod:dns_dnspod_email = "你的邮箱"
certbot_dns_dnspod:dns_dnspod_api_token = "你的id,你的token"
然后我们就可以使用dns插件模式来申请泛解析的域名证书了。命令格式如下:
certbot certonly -a certbot-dns-dnspod:dns-dnspod
--certbot-dns-dnspod:dns-dnspod-credentials /etc/letsencrypt/dnspod.conf
-d *.woria.cn
-d woria.cn
--server https://acme-v02.api.letsencrypt.org/directory
第一行表示仅用来申请证书。使用dns插件模式,插件名字:dns-dnspod
第二行表示插件的配置文件是/etc/letsencrypt/dnspod.conf
第三行和第四行-d 表示添加域名
第四行则声明使用letsencrypt来作为证书颁发机构。
整完之后,如果想对现在申请的证书进行清理。可以使用如下两个命令:
#查询本地申请的证书清单
certbot certificates
#删除本地申请的证书清单
certbot delete --cert-name
整完之后,我们先测试一下需求命令是否异常
/usr/bin/certbot renew –force-renewal
–force-renewal 为强制更新
没啥毛病,我们来添加计划任务
#自动更新https证书
13 3 * * 6 /usr/bin/certbot renew --force-renewal >> /var/log/certbot-renew.log
#自动更新https证书后,重启nginx
23 3 * * 6 systemctl restart nginx.service
33 3 * * 6 systemctl restart php-fpm.service
每周六3点13分进行强制证书更新,并写入日志。
然后在3点23和3点33重启nginx和php已加载最新的证书。
2022-09-15