宝塔面板部署SSL证书的方法

a
admin
作者
2026-07-20
发布日期
约 10 分钟
阅读时间

最近帮好几个朋友用宝塔面板部署SSL证书,宝塔是国内用得最多的服务器管理面板,部署SSL比命令行简单很多,但有几个细节不注意还是会踩坑。这篇把完整流程和注意事项写一下。

宝塔面板简介

宝塔面板(BT Panel)是国内使用最广泛的服务器管理面板,支持CentOS、Ubuntu、Debian等主流Linux系统,图形化管理Nginx/Apache、数据库、文件、SSL证书。如果你买的是阿里云、腾讯云的ECS,宝塔几乎是标配。

部署SSL证书前,确保:

  • 宝塔面板已安装并能正常登录
  • 网站已添加到宝塔(”网站”菜单里有对应站点)
  • 域名已解析到服务器IP
  • 已申请SSL证书文件

证书可以去 sslmianfei.com 免费申请,支持单域名、通配符、IP证书,操作很方便。

方法一:手动部署证书

适合已在外部申请证书的情况,比如在sslmianfei申请的ZeroSSL证书。

第一步:准备证书文件

申请下来的证书通常有三个文件:

  • certificate.crt:域名证书
  • private.key:私钥
  • ca_bundle.crt:CA中间证书

需要把 域名证书和中间证书合并成一个文件

cat certificate.crt ca_bundle.crt > fullchain.crt

合并后的 fullchain.crt 内容长这样:

-----BEGIN CERTIFICATE-----
你的域名证书内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中间证书内容
-----END CERTIFICATE-----

顺序不能反,域名证书在前,中间证书在后。

第二步:宝塔后台上传证书

登录宝塔后台,按以下路径操作:

  1. 左侧菜单点击 网站
  2. 找到要部署证书的网站,点击 设置
  3. 在弹出窗口左侧选择 SSL
  4. 切换到 其他证书 标签页(不要选Let’s Encrypt,那是自动申请)

第三步:粘贴证书内容

页面上有两个文本框:

密钥(KEY) 框:粘贴 private.key 的完整内容,包括 -----BEGIN PRIVATE KEY----------END PRIVATE KEY-----

证书(PEM格式) 框:粘贴刚才合并的 fullchain.crt 完整内容。

粘贴完点击 保存 按钮。

第四步:开启强制HTTPS

保存证书后,下方会出现 强制HTTPS 按钮,点击开启。宝塔会自动在网站配置里添加HTTP跳转HTTPS的规则。

第五步:验证

打开浏览器访问 https://你的域名.com

  • 地址栏出现绿色小锁
  • HTTP访问会自动跳转到HTTPS
  • SSL证书测试工具 检测配置是否完整

方法二:宝塔自动申请Let’s Encrypt

如果不想手动申请,宝塔内置了Let’s Encrypt自动申请功能。

操作步骤

  1. 网站设置 → SSL → Let’s Encrypt 标签页
  2. 勾选要申请的域名(主域名和www子域名)
  3. 点击 申请

宝塔会自动完成:

  • 生成CSR和私钥
  • 完成DNS或文件验证
  • 下载证书
  • 部署到网站
  • 设置自动续期

整个过程1-2分钟,完全自动化

限制

  • 只支持Let’s Encrypt品牌
  • 不支持通配符证书(要通配符需要DNS API验证,配置较复杂)
  • 免费版宝塔每站点最多3个域名
  • 80端口必须可访问(文件验证需要)

方法三:部署通配符证书

通配符证书(*.example.com)覆盖主域名下所有子域名,部署方法略有不同。

申请通配符证书

sslmianfei.com 输入 *.example.com,选择DNS验证。验证通过后下载证书文件。

宝塔部署

通配符证书部署到主域名:

  1. 网站设置 → SSL → 其他证书
  2. 粘贴fullchain和私钥
  3. 保存
  4. 开启强制HTTPS

注意:通配符证书不能直接用于主域名 example.com,需要在申请时同时包含 *.example.comexample.com(SAN多域名),否则访问主域名会报证书不匹配。

Nginx配置优化

宝塔默认的SSL配置已经可用,但可以做进一步优化。网站设置 → 配置文件,找到SSL部分,建议改成:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# OCSP装订
ssl_stapling on;
ssl_stapling_verify on;

# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

保存后点击 重载配置 生效。

常见问题排查

证书不匹配错误

访问域名提示证书不匹配,常见原因:

  • 申请证书时填的域名和实际访问域名不一致
  • 通配符证书没覆盖主域名
  • 部署到了错误的网站

解决:用 证书查看工具 解析证书,确认SAN字段覆盖了你要访问的域名。

证书链不完整

浏览器报”证书不受信任”但证书本身有效。检查fullchain是否包含了中间证书。宝塔后台部署时如果只填了域名证书没填CA Bundle,就会出现这个问题。

私钥不匹配

宝塔保存证书时提示”私钥不匹配”。原因:

  • 复制私钥时少了开头或结尾的标记
  • 私钥和证书不是同一对
  • 私钥被加密了(带ENCRYPTED字样)

解决:重新下载证书文件,确保私钥以 -----BEGIN PRIVATE KEY----- 开头、-----END PRIVATE KEY----- 结尾,中间内容完整无空格。

HTTP跳转HTTPS失效

强制HTTPS按钮已开启但还是能用HTTP访问。检查网站配置文件:

if ($server_port !~ 443){
    rewrite ^(/.*)$ https://$host$1 permanent;
}

这段代码应该在server 80端口的配置块里。如果没有,手动添加。

端口443未开放

阿里云、腾讯云的安全组要放行443端口。宝塔的防火墙也要放行:

  • 云服务商控制台 → 安全组 → 添加规则 → 放行443/TCP
  • 宝塔 → 安全 → 防火墙 → 放行443端口

续期问题

Let’s Encrypt证书90天过期,宝塔会自动续期。ZeroSSL证书也是90天,需要手动续期。建议在宝塔的 计划任务 里添加提醒,或者用脚本定时检查证书到期时间。

多站点部署

一台服务器上多个网站每个都需要单独部署SSL证书:

  1. 每个网站在宝塔”网站”菜单单独添加
  2. 每个网站单独设置SSL
  3. 通配符证书可以一份证书部署到多个子域名站点

宝塔免费版支持多站点,但每个站点SSL配置独立保存。

部署后检查清单

部署完成后建议做一次全面检查:

  • [ ] HTTPS访问正常,地址栏有绿锁
  • [ ] HTTP自动跳转到HTTPS
  • [ ] 证书链完整(用浏览器查看证书路径有3层)
  • [ ] HSTS头部已发送
  • [ ] TLS 1.0和1.1已禁用
  • [ ] 443端口外部可访问
  • [ ] 证书有效期还有60天以上

可以用 SSL测试工具 一次性检测所有项目。

最后

宝塔部署SSL证书整体来说比命令行简单很多,手动部署三部曲:合并证书链 → 粘贴fullchain和私钥 → 开启强制HTTPS。最容易踩的坑是证书链合并和私钥格式,这两点注意了基本就稳了。

自动申请方案虽然省事,但功能有限,需要通配符或多品牌证书还是建议手动部署。希望这篇教程对使用宝塔的朋友有帮助。

本文到此结束