使用certbot来自动续期https证书(仅做留备)

首先是通过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

发表回复