宝塔自动化脚本批量绑定站点SSL证书:零基础操作指南
如果你管理着多个站点,一个一个在宝塔面板里申请并绑定SSL证书非常耗费时间。
通过自动化脚本,可以一次性完成所有站点的证书申请和绑定,节省大量精力。
本文面向零基础用户,按步骤讲解如何准备、执行脚本和验证结果,即使不熟悉命令行的读者也能跟着操作。
适用场景与准备条件
这套方法适合以下情况:服务器上有多个网站(例如在用泽御云搭建的企业站或个人站),域名都已解析到服务器IP,并且宝塔面板已开启SSL功能。
你需要提前准备:
- 宝塔面板已安装(建议版本7.9以上)
- 已登录宝塔后台,记下面板API密钥(设置 -> API接口 -> 开启并生成密钥)
- 站点域名已全部正确解析
- 服务器Python环境正常(宝塔自带)
自动化脚本的获取与配置
目前社区常用脚本是基于宝塔官方API封装的Python脚本。
推荐使用 bt-ssl-batch(请自行搜索最新可靠版本)。
在服务器上执行以下命令下载:
wget -O bt_ssl_batch.py https://example.com/bt_ssl_batch.py # 替换为实际下载地址
下载后将脚本中的 BT_PANEL_URL 和 API_KEY 修改为你自己的值:
BT_PANEL_URL = "http://你的面板地址:8888"
API_KEY = "你的API密钥"
批量绑定SSL证书的执行步骤
脚本默认使用Let's Encrypt免费证书,支持通配符和多域名。
进入脚本所在目录,执行:
python3 bt_ssl_batch.py --site-list /root/domains.txt
其中 domains.txt 文件每行一个域名(格式:example.com 或 *.example.com)。
脚本会自动遍历站点并申请证书。
如果某个站点已存在证书,脚本会跳过或强制覆盖(取决于参数)。
等待脚本运行结束,通常一个域名耗时1-2分钟。
完成后脚本会输出每个站点的绑定状态。建议先在一个测试站点上跑通,再批量执行。
避坑指南与常见错误
1. 域名未解析到本服务器 —— 脚本会报 IP mismatch。
请在脚本运行前检查所有域名的DNS解析。
2. API密钥未放行 —— 宝塔API默认绑定IP白名单。
确保已在API接口中添加当前服务器IP,否则脚本返回401错误。
3. 申请超出频率限制 —— Let's Encrypt对单个IP有每小时申请次数限制(约50次)。
如果站点超过50个,建议分批次或使用泛域名证书。
4. 部分站点证书未生效 —— 检查域名是否开启了强制HTTPS或重定向,有时需要手动在宝塔面板点一下“部署”。
如何验证批量绑定结果
运行脚本后,可以通过两种方式验证:
- 宝塔面板:进入网站,逐个点击站点,查看SSL标签页是否显示“已开启”及证书到期时间。
- 命令行:用
curl -I https://你的域名检查返回头是否包含SSL certificate verify ok。
你也可以用 openssl s_client -connect 你的域名:443 查看证书详情。
如果所有站点都正常显示证书,则批量操作成功。
高频问题解答
问题1:
脚本支持阿里云DNS验证吗? —— 上述脚本默认支持HTTP验证,
如果要用DNS验证(如泛域名),
需要配合对应DNS服务商的API,
建议搜索“宝塔批量申请泛域名SSL脚本”。
问题2:
证书到期后会自动续期吗? —— 脚本只执行一次绑定,
若要自动续期,
可在宝塔计划任务中设置每周执行一次该脚本(例如 0 3 * * 0 python3 /path/bt_ssl_batch.py)。
问题3:执行脚本时提示找不到站点 —— 检查 domains.txt 中的域名是否和宝塔里已添加的域名完全一致(包含www)。
宝塔站点名称必须匹配。
问题4:脚本报错 ImportError: No module named requests —— 在服务器执行 pip3 install requests 安装依赖后重试。
如果你正在处理多站点SSL部署,建议先按本文步骤完整执行一个批次,确认无误后再扩大范围;
遇到异常时优先回看避坑部分。
任何操作前建议先备份宝塔面板数据(面板设置 -> 备份)。