前几天给 VPS 加了个域名,在宝塔里签了 Let’s Encrypt 证书。签完习惯性去计划任务里找那条熟悉的「续签Let’s Encrypt证书」,结果是空的,「共 0 条」。当时还以为新版面板把自动续签去掉了。
后来在站点 SSL 页面点了一次「续签」,再刷新计划任务,这条任务就出现了。记录一下,省得下次又满世界找。
结论先说
新版宝塔(9.x、10.x、11.x)不再给新装的面板预置这条续签任务。它是面板在这两件事之后自己创建的:
- 你为某个站点签发并部署过 Let’s Encrypt 证书;
- 或者你在站点 SSL 页面手动点过一次「续签」。
所以计划任务列表为空,不代表续签功能没了,只代表这台机器还没被触发过。
这条任务长什么样
在计划任务里点「编辑」能看到全部细节:
| 字段 | 值 |
|---|---|
| 任务类型 | Shell脚本 |
| 任务名称 | 续签Let’s Encrypt证书 |
| 执行周期 | 每天的 23:38 执行一次(等于创建它的那一刻) |
| 执行用户 | root(开启进程锁) |
| 分类 | 默认分类 |
| 状态 | 正常 |
脚本内容只有一行:
/www/server/panel/pyenv/bin/python3 -u /www/server/panel/class/acme_v2.py --renew_v2=1
这里有个细节:宝塔论坛 2021 年那篇老帖里给的命令是 --renew=1,而新版面板自动生成的这条用的是 --renew_v2=1。哪天任务被误删要手动加回来,用面板自己生成的这版参数更稳妥。
想手动加回来
计划任务 → 添加任务:
- 任务类型:Shell脚本
- 任务名称:续签Let’s Encrypt证书
- 执行周期:每天,挑个服务器不忙的时间段
- 执行用户:root
- 脚本内容:上面那一行
- 保存
每天跑一次足够。脚本会自己判断哪些证书临近到期,没有到期的直接跳过。
几个容易踩的点
点「续签」提示”未找到将到期的证书”
这是正常提示,不是证书坏了。Let’s Encrypt 只允许在到期前 30 天内续签,我签完那天还剩 88 天,点续签就是这个结果。等剩下二十几天再操作。
反代、301 的站点要额外留意
Let’s Encrypt 走的是文件验证(http-01),续签时 CA 需要能访问 你的域名/.well-known/acme-challenge/xxx。如果反向代理规则把这个路径也转给后端了,续签就会失败。宝塔官方也明确写过「网站开启反向代理/301 会导致续签失败」。我这台正好是反代站,这次签发成功只说明当时这条路是通的,以后续签失败,第一个要查的就是这里。
怎么看证书还有多久到期
网站列表里「SSL证书」那列会直接显示”剩余 N 天”。点进站点 → 设置 → SSL → 当前证书,能看到品牌、到期时间、订单状态和验证方式。
想再深一层核对,可以登录面板的终端看证书文件里的日期(宝塔一般把站点证书放在 /www/server/panel/vhost/cert/你的域名/):
openssl x509 -noout -dates -in /www/server/panel/vhost/cert/你的域名/fullchain.pem
一句话总结
计划任务里那条续签任务是用出来的,不是装好就有的。签完证书去站点 SSL 页面点一次「续签」,它就出现了,之后每天自己跑,不用再管。
原创文章,作者:admin,如若转载,请注明出处:https://www.uqvn.com/1637.html