多站点统一批量申请SSL证书宝塔脚本

如果你的宝塔面板上挂了十几个甚至更多网站,每三个月手动申请一次 Let‘s Encrypt 证书,重复劳动不说,还容易漏掉某个站点。
这时候,一套“多站点统一批量申请SSL证书宝塔脚本”就能帮你一次搞定所有站点。
本文按照零基础可操作的方式,从准备条件、脚本执行到排错验证,一步一步讲清楚。

适用场景与准备条件

这个方案适用于所有站点都在同一台服务器、宝塔面板已安装并正常运行的环境。
在动手之前,确认以下几点:

  • 宝塔面板已登录,并且所有网站已经添加成功、域名已解析到服务器 IP。
  • 服务器能够正常访问外网(申请证书需要验证域名)。
  • 你有一个能执行 Shell 命令的 SSH 工具(如 Xshell、Putty 或宝塔的终端功能)。
  • 了解自己的宝塔面板版本(本文基于 7.x 版本,向下兼容)。

编写批量申请脚本

宝塔面板自身提供了 Let‘s Encrypt 免费证书的单个申请功能,但要想批量执行,就需要借助 acme.sh 脚本 或宝塔官方的 API 接口。
这里推荐 acme.sh,因为它稳定且支持通配符证书,关键是能写循环自动处理多个域名。

第一步:安装 acme.sh
在 SSH 中执行:

curl https://get.acme.sh | sh -s email=你的邮箱@example.com

安装完成后重新加载 Shell 环境:

source ~/.bashrc

第二步:申请 API 密钥(如果你使用 DNSPod、阿里云等 DNS 验证)
为了批量且静默地验证域名,建议使用 DNS API 模式。以腾讯云 DNSPod 为例,去控制台获取 DP_Id 和 DP_Key,然后 export 环境变量。

第三步:编写批量脚本
创建一个文件 batch_ssl.sh,内容如下:

#!/bin/bash
# 要申请的域名列表,一行一个
domains=(“example1.com” “example2.com” “example3.net”)
# 证书输出目录(可选)
output_dir=“/etc/nginx/ssl”
mkdir -p “$output_dir”

for domain in “${domains[@]}”; do
  echo “正在为 $domain 申请证书...”
  acme.sh --issue --dns dns_dp -d “$domain” --keylength ec-256
  # 安装证书到宝塔默认路径(根据实际修改)
  acme.sh --install-cert -d “$domain” \
    --cert-file “$output_dir/$domain.crt” \
    --key-file “$output_dir/$domain.key” \
    --fullchain-file “$output_dir/$domain.fullchain.crt”
  echo “$domain 完成。”
done

注意:dns_dp 代表 DNSPod,
如果域名在其他服务商,
请修改 --dns 参数(如 dns_cf 对应 Cloudflare)。keylength ec-256 表示 ECC 证书,
兼容性好。

第四步:执行脚本
给予执行权限并运行:

chmod +x batch_ssl.sh
./batch_ssl.sh

等待所有域名验证完成,通常每个域名 10-30 秒。

第五步:在宝塔面板中关联证书
生成证书文件后,需要去宝塔后台 网站 → 对应站点 → SSL → 其他证书,手动上传 .key 和 .fullchain.crt 文件并保存。这一步需要逐个操作,但证书已提前申请好,只需上传,比逐个从零申请快很多。

高频问题与避坑指南

Q:申请过程中提示“无权限”或“连接超时”怎么办?
A:检查服务器是否可正常访问 api.acme.sh 和 Let‘s Encrypt 的验证服务器。防火墙开启 80 和 443 端口;DNS API 密钥是否写对。

Q:批量申请会不会被 Let’s Encrypt 限制频率?
A:Let‘s Encrypt 对每个域名的申请频率为 50 次/周。你平时手动操作也没问题,但脚本执行时如果域名数量很多(超过 200),建议分批执行,每次间隔几分钟。

Q:证书申请成功后,宝塔面板不识别?
A:宝塔默认的 SSL 存储路径不同,你的脚本输出目录需要与宝塔一致。最简单的方法:先在宝塔上手动为某个站点申请一次证书,然后记录证书实际存储路径(一般是 /www/server/panel/vhost/cert/站点目录/),修改脚本中的输出目录即可。

避坑重点:

  • 不要在凌晨执行大量申请,容易触发 Let’s Encrypt 的限制规则。
  • 定期检查证书有效期,建议设置 crontab 每月 1 号执行一次脚本,同时更新宝塔的证书文件。
  • 如果站点使用了反向代理或 CDN,需要确保验证时源站可正常返回 80/443 响应,否则验证失败。

效果验证

执行完成后,随便访问几个站点,查看浏览器地址栏的锁标志是否正常。
在宝塔后台的 网站 → SSL 页面,也可以看到证书状态和到期时间。
你也可以用命令验证:

curl -I https://example1.com 2>/dev/null | grep “SSL”

如果输出包含证书信息,说明批量申请成功。

至此,你已经掌握了在宝塔面板中通过脚本批量申请 SSL 证书的方法。
以后站点数量增加时,只需修改脚本中的域名列表,再执行一遍就行。
如果你想了解更多宝塔自动续期的配置,可以继续阅读本站相关教程。

分享到:
上一篇
磁盘空间爆满自动清理日志定时任务
下一篇
移动端专项速度优化外贸独立站实操
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意