Certbot和DNSPod获取免费ssl证书及自动续签(含泛域名证书)

测试环境:Centos7,其他系统自行替换命令

删除其他版本的 certbot

先把以前的老版本的 Certbot 删除:

yum remove certbot

安装 python 3.7或以上版本

测试时间2024-10-23,使用python3.6版本时已经抛出提示:

Python 3.6 support will be dropped in the next release of Certbot - please upgrade your Python version.

Certbot 的下一版本将不再支持 Python 3.6 - 请升级您的 Python 版本。

安装参考:

或使用 scl 仓库安装:

Centos7安装SCL YUM源-织秋笔记
Centos7安装SCL YUM源-织秋笔记
zel的头像-织秋笔记赞助大会员10月23日 15:27
0275

安装完 scl 仓库后安装python3.8

yum install -y rh-python38

然后创建软链接

ln -s /opt/rh/rh-python38/root/usr/bin/python3 /usr/bin/python3
ln -s /opt/rh/rh-python38/root/usr/bin/pip3 /usr/bin/pip3

把 /opt/rh/rh-python38/root/usr/bin/ 加入 PATH,这样的话后面用 pip3 装了脚本可以正常执行。

export PATH=$PATH:/opt/rh/rh-python38/root/usr/bin/:/opt/rh/rh-python38/root/usr/local/bin

完成后确认版本:

python3 -V
pip3 -V

如果失败可能要刷新下命令缓存。

hash -r

注意:用 rh-python38,脚本目录是 /opt/rh/rh-python38/root/usr/local/bin,如果之前没把目录加入 PATH,会无法直接运行 certbot。

使用pip安装 certbot 和 certbot-dnspod


pip3 install certbot certbot-dnspod

然后可以参考 certbot-dnspod 的文档

创建一个 ~/.secrets/certbot/dnspod.ini 的文件,内容为:

certbot_dnspod_token_id = your token id
certbot_dnspod_token = your token

Token id 与token 在dnspod api密钥中获取


注意 certbot-dnspod-credentials 这个文件的 API ID 是在「API 密钥」界面的「DNSPod Token」标签下面的。

授予权限:

chmod 600 ~/.secrets/certbot/dnspod.ini

### 最后使用certbot命令获取即可

certbot certonly -a dns-dnspod --dns-dnspod-credentials ~/.secrets/certbot/dnspod.ini --preferred-challenges dns-01 --key-type rsa --email email@email.com -d domain.com

根据自己情况替换邮箱及命令最后的域名,泛域名直接改为*.domain.com即可

申请完成后,证书文件存放在 /etc/letsencrypt/live/域名 目录下

### 自动续签

certbot renew -a dns-dnspod --dns-dnspod-credentials ~/.secrets/certbot/dnspod.ini --preferred-challenges dns-01 --key-type rsa

该命令会自动续签申请过的证书,当过期时间小于10天时才会请求续签

该命令用定时任务每天执行一次即可

用上述命令进行续签后不会自动重启网页服务并加载新证书,所以需要添加参数: --post-hook '重载网页服务命令'

具体如下:

certbot renew -a dns-dnspod --dns-dnspod-credentials ~/.secrets/certbot/dnspod.ini --preferred-challenges dns-01 --key-type rsa --post-hook '/www/server/nginx/sbin/nginx -s reload'

以我为例,在使用宝塔的情况下,进行证书文件链接从而实现免去手动在宝塔面板中更新:

找到网站先前配置的ssl文件,如未配置需要先配置,一般在 /www/server/panel/vhost/cert/域名 目录中

先将宝塔配置的证书文件删除

rm -rf /www/server/panel/vhost/cert/域名/fullchain.pem
rm -rf /www/server/panel/vhost/cert/域名/privkey.pem

然后使用 ln 命令将申请的证书链接到该目录

ln -s /etc/letsencrypt/live/域名/fullchain.pem /www/server/panel/vhost/cert/域名/fullchain.pem
ln -s /etc/letsencrypt/live/域名/privkey.pem /www/server/panel/vhost/cert/域名/privkey.pem

然后重启nginx即可

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容