本指南将向您展示如何在 VestaCP(Linux 控制面板)上安装 SSL 证书。内容涵盖两种安装场景:通过WEB标签为托管网站进行安全配置,以及替换保护 VestaCP 管理面板本身(端口8083)的证书。
关于 VestaCP 维护的说明
开始之前请注意:原始的 VestaCP 项目已经沉寂多年,很长时间未收到有意义的更新。如果您正在搭建新服务器,请考虑使用 HestiaCP,这是一个仍在积极维护的社区分支,保留了相同的界面,同时增加了现代 TLS 支持、多 PHP 版本支持以及最新的安全修复。以下步骤仍适用于旧版 VestaCP 安装,而且相同的 WEB 标签工作流程在 HestiaCP 上同样适用,因为 SSL 面板基本没有变化。
在 VestaCP 上生成 CSR 代码
如果您已经生成了 CSR 并从 CA 收到了颁发的证书,请直接跳转到安装部分。
每一份商业 SSL/TLS 证书都从 CSR(证书签名请求)开始,这是一段编码文本,包含您的域名和联系信息,并与私钥配对。您有两种选择:
- 使用我们的CSR 生成器自动生成 CSR。CSR 及其私钥会在您的浏览器中生成,因此请妥善保存密钥:安装过程中的 SSL Key 字段将需要用到它。
- 按照我们的教程如何在 VestaCP 上生成 CSR,直接在服务器上生成 CSR。
用任意文本编辑器(例如记事本)打开 CSR 文件,复制整段内容(包括 BEGIN CERTIFICATE REQUEST 和 END CERTIFICATE REQUEST 这两行),然后粘贴到订单表单中。如果您想在提交前确认 CSR 是否正确,可以通过我们的CSR 解码器进行检查。
在 VestaCP 上安装 SSL 证书(WEB 标签)
证书颁发机构签发证书后,您将通过电子邮件收到一个 ZIP 压缩包。请下载并在您的计算机上解压。您需要将三段文本粘贴到 VestaCP 中:
- 为您的域名颁发的主服务器证书(.crt 文件)。
- 与 CSR 一同生成的私钥(.key 文件)。
- 包含中间证书(及根证书)的 CA 证书包(.ca-bundle 文件)。这对于让证书链在各种浏览器及移动设备上通过验证是必需的。
用纯文本编辑器打开每个文件,以便在后续步骤中复制其内容。请确保包含 BEGIN CERTIFICATE 和 END CERTIFICATE 标记;缺少这些标记是 VestaCP 拒绝输入的常见原因。
第 1 步:登录 VestaCP 并打开 WEB 标签
使用管理员账户登录位于 https://your-server-ip:8083 的 VestaCP 控制面板,然后点击顶部导航中的 WEB 标签。
第 2 步:编辑您要保护的域名
在列表中找到该域名,将鼠标悬停在其上,然后点击编辑。这会打开编辑域名页面,其中包含该站点的所有设置。
第 3 步:启用 SSL 支持,并保持 Let’s Encrypt 关闭
勾选 SSL Support 复选框,SSL 相关字段会随即显示在下方。请保持 Lets Encrypt Support 选项未选中:如果您启用它,VestaCP 会用它自行签发的 Let’s Encrypt 证书覆盖您填写的字段,忽略您粘贴的内容。
第 4 步:粘贴证书、密钥和 CA 证书包
在三个字段中填入对应文件的内容:
- SSL Certificate:粘贴您 .crt 文件的内容(为您域名颁发的证书)。
- SSL Key:粘贴您在生成 CSR 时保存的私钥 .key 文件的内容。
- SSL Certificate Authority / Intermediate:粘贴 .ca-bundle 文件的内容。此字段在表单中是可选的,但您应始终填写:如果缺失,移动浏览器及许多 API 客户端将报告证书链不完整。
第 5 步:保存
滚动到页面底部,点击保存。VestaCP 会将证书、密钥和证书链写入该域名的 Web 配置中,并重新加载 Web 服务器。您的站点现在可以通过 HTTPS 访问了。
可选:改用 Let’s Encrypt
如果您不需要付费证书,VestaCP 可以为同一域名签发并自动续期免费的 Let’s Encrypt 证书。在编辑域名页面上,先勾选 SSL Support,然后勾选 Lets Encrypt Support,再保存。面板会对该域名执行 HTTP-01 验证,验证成功后会自动将签发的证书、密钥和证书链填入 SSL 相关字段。续期会通过 cron 自动运行。要通过验证,该域名必须已经在 DNS 中解析到此服务器,并在端口 80 上有响应。
替换 VestaCP 管理面板(端口 8083)上的 SSL 证书
端口 8083 上的管理面板使用自己独立的证书,与任何托管网站分开。默认情况下,它是存储在 /usr/local/vesta/ssl/certificate.crt 和 /usr/local/vesta/ssl/certificate.key 中的自签名证书,这也是为什么浏览器在访问该面板时会发出警告。要将其替换为受信任的证书(例如 VestaCP 已经通过 Let’s Encrypt 为您的面板主机名签发的证书),请以 root 身份通过 SSH 登录服务器并运行:
cd /usr/local/vesta/ssl
mv certificate.crt certificate.crt.bak
mv certificate.key certificate.key.bak
ln -s /home/admin/conf/web/ssl.your-panel-hostname.crt /usr/local/vesta/ssl/certificate.crt
ln -s /home/admin/conf/web/ssl.your-panel-hostname.key /usr/local/vesta/ssl/certificate.key
service vesta restart
请将 your-panel-hostname 替换为您实际用来在端口 8083 上访问的主机名(例如 panel.example.com)。使用符号链接而非直接复制文件的好处是:当 VestaCP 自动为该主机名续期 Let’s Encrypt 证书时,面板会在下次重启时自动获取新文件,而不需要您再次手动复制。如果您更倾向于使用复制方式,可以将两条 ln -s 命令替换为 cp 命令;但请记住,这样每次续期后您都需要重新复制文件。
如果您要粘贴的是来自其他 CA 的证书,请将证书正文放入 certificate.crt,将对应的私钥放入 certificate.key,并将中间证书链附加到 certificate.crt 的末尾,以便浏览器能够获取完整的证书链。然后运行 service vesta restart。重启后,在浏览器中重新加载面板并确认锁形图标是否显示正常。
测试 SSL 安装
保存后,通过 https:// 打开您的站点,检查锁形图标是否正常显示。若要进行更深入的检查,同时确认中间证书链和协议支持情况,可以使用我们的SSL Checker对该域名进行检测。如果报告提示缺少中间证书,请返回 WEB 标签,将 CA 证书包粘贴到 SSL Certificate Authority / Intermediate 字段中,然后再次保存。
常见问题
原始的 VestaCP 项目已经沉寂多年,很长时间没有发布常规的安全更新。现有的安装仍然可以使用,上述 SSL 安装流程也仍能成功安装有效证书,但对于新服务器,我们建议使用HestiaCP,这是一个仍在积极维护的社区分支。HestiaCP 保留了相同的界面以及相同的 WEB / 编辑 / SSL Support 流程,因此本指南中的步骤几乎可以原样适用。
对于托管网站,VestaCP 会将每个域名的证书、私钥和 CA 证书包存放在 /home/<user>/conf/web/ssl.<domain>.* 目录下(其中 <user> 是拥有该域名的 Linux 账户)。对于管理面板本身,证书和密钥位于 /usr/local/vesta/ssl/certificate.crt 和 /usr/local/vesta/ssl/certificate.key。
可以。在编辑域名页面上,先勾选 SSL Support,然后勾选 Lets Encrypt Support,再保存。VestaCP 会对您的域名执行 HTTP-01 验证挑战,将签发的证书安装到 SSL 相关字段中,并通过 cron 安排自动续期。要通过验证挑战,该域名必须在 DNS 中解析到此服务器,并在端口 80 上有响应。
不需要。在编辑域名页面上点击保存会让 VestaCP 自动将新证书写入域名配置,并重新加载 Nginx 和 Apache。只有在替换端口 8083 上管理面板本身的证书时,您才需要重启 vesta 服务。
最常见的原因是 SSL Certificate Authority / Intermediate 字段留空,或者粘贴的 CA 证书包缺少 BEGIN CERTIFICATE 和 END CERTIFICATE 标记。请再次编辑该域名,将完整的 .ca-bundle 文件内容粘贴到该字段中,保存后重新运行我们的SSL Checker。


