开源插件 · 当前版本 v1.0.3

宝塔SSL证书
自动化管理插件

批量上传腾讯云下载的 SSL 证书压缩包,自动匹配站点域名、检测证书过期状态并一键替换。 支持自动启用 SSL、nginx 配置写前备份与失败自动回滚。

宝塔面板必须在 PC 端操作,请使用电脑浏览器完成下载与安装。

  • 57后端端到端测试用例
  • 27前端上传队列测试用例
  • 7项插件商店安全审计要点
  • 0第三方外联 / 数据收集

功能特性

从证书上传到站点生效,一条链路全自动

每一个能力都来自插件真实实现,接口清单与源码可在仓库中逐一核对。

批量上传证书包

一次多选多个腾讯云下载的 zip(含 域名_服务器类型 文件夹),逐个解析出证书链与私钥并入库。单包损坏不影响其余包,结果按包汇总展示,单包上限 50MB、批量最多 200 个。

智能匹配站点域名

按证书 CN + SAN 与站点域名自动匹配,支持 *.example.com 单层泛域名。只有精确匹配才允许替换,从机制上防止误替换其他站点。

SSL 状态一览

表格展示全部站点的证书状态:未配置 / 有效 / 15 天内即将过期 / 已过期,附带到期时间、剩余天数与仓库中匹配的证书,过期站点红色标记。

一键替换

行内「上传替换」传包即换(限单个 zip);「选证书替换」手动指定仓库证书;顶部「一键替换已过期站点」自动扫描并批量处理,输出逐站执行报告。

自动启用 SSL

站点未开启 SSL 时,自动向 nginx 配置注入 SSL 配置块:写入前先备份,nginx -t 测试失败自动回滚,随后重载 web 服务,全程不留半截配置。

证书仓库管理

解析后的证书统一存入插件仓库 certs/,私钥文件权限固定 600(仅 root 可读)、仓库目录 700,卸载插件前自动备份到 /www/backup/。

工作流程

四步完成全站证书更新

从上传 zip 到 nginx 重载,全程在面板内闭环完成。

  1. 01

    上传证书包

    在插件页顶部「批量上传证书包(zip)」一次选择多个腾讯云下载的 zip,按住 Ctrl / Shift 多选。

  2. 02

    解析入库

    逐个串行解析出完整证书链(.pem)与私钥(.key),无 .pem 时自动拼接 .crt 生成完整链,统一入库到证书仓库。

  3. 03

    查看状态

    「站点 SSL 一览」表格列出每个站点的证书状态、到期时间、剩余天数与匹配到的仓库证书。

  4. 04

    一键替换

    单站或批量替换证书,未开启 SSL 的站点自动写入 nginx 配置并重载,替换完成后立即生效。

安装方式

两种方式,任选其一

推荐方式一:打包后通过宝塔面板「导入插件」完成安装,最符合官方插件规范。

推荐

方式一 · 面板导入插件

  1. 本地或服务器上打包:./pack.sh(或 python pack.py),产物为 dist/sslauto.zip;
  2. 宝塔面板 → 软件商店 → 第三方应用 → 导入插件 → 选择 sslauto.zip;
  3. 面板自动解压到 /www/server/panel/plugin/sslauto 并执行安装脚本;
  4. 在「软件商店 → 第三方应用」中打开「SSL证书自动化」。

安装包与版本化发布归档可在下方仓库的发行版页面获取。

方式二 · 源码部署

适用于已经在服务器上、习惯命令行操作的场景。以下仓库为公开镜像,可直接克隆:

bash
git clone https://cnb.cool/iskyxworkstation/cloudbt-sslauto.git
cd cloudbt-sslauto
bash deploy.sh

deploy.sh 会把插件目录复制到面板插件目录并自动收紧权限。

环境要求

项目要求说明
宝塔面板7.x / 8.x / 9.x(Linux)插件以官方第三方插件规范打包
Python3.x面板自带,无需额外安装
Web 服务器nginx(推荐)/ apachenginx 完整支持含自动启用;apache 仅支持证书文件替换
openssl系统自带即可用于证书解析兜底与公钥配对校验

安全说明

面向面板安全审计设计

完整审计报告见仓库 docs/安全审计报告.md,覆盖宝塔插件商店 7 项审计要点,全部通过。

  • 访问控制:实现官方要求的 _check() 动态路由鉴权,校验面板管理员会话,未登录一律拒绝。
  • 输入白名单:站点名 / 证书名 / zip 文件夹名统一走 _safe_name() 白名单校验,路径拼接使用数据库规范化名称,杜绝路径穿越。
  • zip 安全:拒绝绝对路径与 ../ 目录穿越成员(zip-slip),单包上限 50MB,临时文件唯一命名并在 finally 中清理。
  • 私钥保护:仓库私钥文件权限 600,目录权限 700,仅 root 可读。
  • 配置安全:修改 nginx 配置前先备份,nginx -t 失败自动回滚;openssl 调用使用绝对路径。
  • 防 XSS:前端所有动态数据插入 DOM 前统一转义,防存储型 / 反射型 XSS。
  • 零外联:无任何第三方网络请求、无用户数据收集。
  • 操作留痕:所有操作写入面板操作日志,可追溯。

常见问题

安装与使用排查

打开插件提示「权限认证失败,请尝试刷新页面」怎么办?

该文案由宝塔面板框架返回,通常是插件请求未通过面板鉴权,按以下顺序排查:

  1. 确认插件版本 ≥ 1.0.1。v1.0.0 的前端不会携带面板全局注入的鉴权头(x-http-token),必然出现该提示,v1.0.1 起已修复;
  2. 在插件页面按 F12 → Network,找到 plugin?action=a&name=sslauto&s=... 请求,检查请求头是否带 x-http-token;
  3. 若响应体就是该文案,执行 bt → 16(修复面板)或 9(清除面板缓存)后重新登录;
  4. 若响应体是插件的 JSON(如 {"status":false,"msg":"站点不存在"})→ 插件逻辑问题,按 msg 排查。
修改代码后页面没有变化?

宝塔面板没有热重载。需要重新打包并「导入插件」覆盖安装,或把文件覆盖到 /www/server/panel/plugin/sslauto/ 后强制刷新(Ctrl + F5)。开发阶段建议在面板设置中开启开发者模式。

Apache 站点能用吗?

可以,但目前仅支持证书文件替换;自动启用 SSL 需要在面板中手动操作一次。nginx 站点为完整支持,含自动启用与配置回滚。

为什么本页面在手机上无法访问?

宝塔面板插件必须通过 PC 浏览器登录服务器面板完成导入安装,本站因此对移动端做了访问限制。请在电脑上打开本页完成下载与安装。

现在就把全站证书管起来

开源免费 · 无外联 · 面板内闭环操作

下载插件