宝塔面板实现多域名SSL自动匹配需统一申请SAN证书、重签已有站点、手动调用acme.sh、验证Nginx SNI配置及设置计划任务保障续签。

如果您在宝塔面板中为一个网站配置了多个域名,但SSL证书仅对主域名生效,其他绑定域名无法自动获得有效证书,则可能是由于证书未覆盖全部域名或自动续签机制未正确识别多域名。以下是实现网站多域名自动SSL证书匹配的具体操作步骤:
一、添加域名时同步申请泛域名或SAN证书
宝塔面板支持在添加站点时一次性为多个域名申请单张SSL证书(即SAN证书),该证书可同时验证主域名与所有附加域名,确保所有绑定域名均被包含在证书的Subject Alternative Name字段中,从而实现统一证书匹配与自动续签。
1、进入宝塔面板「网站」页面,点击「添加站点」。
2、在「域名」输入框中,**先输入主域名(如 example.com)**,然后在右侧点击「添加更多域名」按钮,逐个填入需绑定的其他域名(如 www.example.com、blog.example.com、api.example.com)。
3、勾选「申请Let’s Encrypt免费SSL」选项,并确保下方「自动续签」已启用。
4、点击「提交」,宝塔将自动调用acme.sh向Let’s Encrypt发起多域名证书申请,生成包含全部域名的SAN证书。
二、为已有站点批量追加域名并重签证书
对于已创建的网站,若初始仅配置了单域名证书,可通过“修改域名”功能追加域名并触发证书重签,使新证书涵盖全部域名,且后续续签将自动继承该域名列表。
1、在「网站」列表中找到目标站点,点击右侧「设置」按钮。
2、切换至「域名管理」选项卡,在「附加域名」区域输入需新增的域名,每行一个,**不可包含空格或特殊符号**。
3、保存后返回「SSL」选项卡,点击「申请证书」按钮旁的下拉箭头,选择「重新申请(保留原域名列表)」。
4、确认弹窗提示,系统将使用当前域名列表(含主域名+所有附加域名)重新签发证书,并自动部署到Nginx/Apache配置中。
三、手动编辑acme.sh命令强制多域名签发
当面板界面操作受限(如域名含通配符或需指定DNS验证方式)时,可通过SSH登录服务器,直接调用acme.sh脚本生成多域名证书,并将证书路径同步至宝塔识别目录,确保面板可接管自动续签流程。
1、通过SSH连接服务器,执行 source /root/.acme.sh/acme.sh.env 加载环境变量。
2、运行命令:/root/.acme.sh/acme.sh --issue -d example.com -d www.example.com -d blog.example.com --nginx --keylength 2048(请将域名替换为实际值)。
3、证书签发成功后,执行:/root/.acme.sh/acme.sh --install-cert -d example.com --key-file /www/server/panel/vhost/cert/example.com/privkey.pem --fullchain-file /www/server/panel/vhost/cert/example.com/fullchain.pem。
4、回到宝塔面板「SSL」页,点击「从文件获取」,选择对应站点,系统将自动识别已部署的多域名证书并启用自动续签。
四、检查Nginx配置确保SNI正确响应
即使证书包含多域名,若Web服务器未正确启用SNI(Server Name Indication)或存在重复server块冲突,客户端仍可能收到默认证书或证书不匹配警告。需验证Nginx配置是否为每个域名指向同一证书路径且无覆盖逻辑。
1、在站点设置中点击「配置文件」,查找所有 server_name 行,确认其后列出的域名与证书涵盖域名完全一致。
2、检查 ssl_certificate 和 ssl_certificate_key 指令路径是否指向宝塔vhost/cert/下该站点的fullchain.pem与privkey.pem文件。
3、确认配置中不存在其他同端口的server块使用不同证书路径,否则可能导致SNI协商失败。
五、启用宝塔计划任务保障多域名续签稳定性
宝塔默认每日凌晨执行SSL续签任务,但若站点域名列表动态变更或acme.sh本地状态异常,可能导致部分域名遗漏。通过手动创建高优先级计划任务,可强制在固定时间点执行多域名证书更新,避免因单次失败导致整体失效。
1、进入宝塔「计划任务」页面,点击「添加计划任务」。
2、任务类型选择「Shell脚本」,执行周期设为「每天」,时间建议设为凌晨02:30(避开系统默认任务高峰)。
3、脚本内容填写:/root/.acme.sh/acme.sh --renew -d example.com -d www.example.com -d blog.example.com --force --dns dns_ali(按实际域名和DNS插件调整)。
4、保存后,该任务将独立于面板内置续签流程运行,确保所有指定域名始终处于可续签状态。










