测试环境: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 仓库安装:
安装完 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即可
暂无评论内容