本指南将向您展示如何在 Sentora 上安装 SSL 证书,Sentora 是从 ZPanel 分叉而来的开源 Web 主机控制面板。内容涵盖生成 CSR、将证书、密钥和 CA 证书包粘贴到 Sentora 的Apache Admin模块中,以及使用现代 TLS 设置强化生成的虚拟主机。
关于 Sentora 维护状态的说明
开始之前请注意:过去几年官方 Sentora 的开发速度已大幅放缓。sentora/sentora-core仓库上最新的稳定版本是v2.0.2(2024 年 5 月,PHP 7.4);针对 PHP 8.x 的2.1.x分支仍被标记为仅限开发用途,不适用于生产环境。社区分叉版本Sentora-NG确实存在,但规模较小。如果您正在搭建新服务器,大多数管理员转向的、维护活跃的开源继任产品是HestiaCP,它是 VestaCP 的分叉版本,拥有类似的界面、当前的 PHP 和 TLS 支持,并内置 Let’s Encrypt。如需商业支持,Plesk是通常的选择。以下步骤仍适用于现有的 Sentora 安装,且 SSL 工作流程并未改变。
在 Sentora 上生成 CSR 代码
如果您已经生成了 CSR 并从您的 CA 收到了签发的证书,请直接跳到安装部分。
每个商业 SSL/TLS 证书都从 CSR(证书签名请求)开始,这是一段包含您的域名和联系信息的编码文本块,并与私钥配对。您有两个选择:
- 使用我们的CSR 生成器自动生成 CSR。CSR 及其私钥会在您的浏览器中生成,因此请将密钥保存在安全的地方:在安装过程中您需要将其粘贴到服务器上,命名为yourdomain.key。
- 按照我们的教程如何在 Sentora 上生成 CSR,在服务器本身上生成 CSR。
使用任何文本编辑器(例如记事本)打开 CSR,复制整段内容(包括BEGIN CERTIFICATE REQUEST和END CERTIFICATE REQUEST这两行),然后粘贴到订单表单中。验证通过后,CA 会通过电子邮件将签发的证书文件发给您。
在 Sentora 上安装 SSL 证书
Sentora 没有像 cPanel 或 VestaCP 那样内置的表单可用于粘贴第三方 SSL 证书。安装过程分为两部分:将证书文件复制到服务器上,然后通过 Sentora 的Apache Admin模块将其附加到 Apache,以便面板在下次同步时重写虚拟主机配置。
第 1 步:准备您的 SSL 文件
证书颁发机构签发证书后,下载 ZIP 压缩包并解压。您最终会得到三个文件:
- 您域名的主服务器证书(.crt文件)。
- 与 CSR 一起生成的私钥(.key文件)。
- 包含中间证书的 CA 证书包(来自 CA 的.ca-bundle或.crt文件)。
有些 CA 会提供一个合并好的证书链文件;有些则将根证书和中间证书作为单独的文件发送。如果是分开的,请用纯文本编辑器打开它们,先粘贴中间证书,再粘贴根证书,保存为一个文件,命名为yourdomain.ca-bundle.crt。证书之间不要留空行,并确保每个证书块都保留其BEGIN CERTIFICATE和END CERTIFICATE标记。
第 2 步:将文件复制到服务器
打开一个到服务器的 SSH 会话并切换为 root 用户,可以在每个命令前加上sudo,或使用sudo -i打开一个 root shell。在 Apache 下创建一个 SSL 目录,并将这三个文件复制进去(先使用scp、sftp或您选择的编辑器上传它们):
sudo mkdir -p /etc/apache2/ssl
sudo cp yourdomain.crt /etc/apache2/ssl/yourdomain.crt
sudo cp yourdomain.key /etc/apache2/ssl/yourdomain.key
sudo cp yourdomain.ca-bundle.crt /etc/apache2/ssl/yourdomain.ca-bundle.crt
sudo chmod 600 /etc/apache2/ssl/yourdomain.key
将密钥文件的权限收紧为600模式,可以防止其他本地用户读取该私钥。
第 3 步:启用 Apache SSL 模块
如果 SSL 模块尚未启用,请启用它并重启 Apache:
sudo a2enmod ssl
sudo service apache2 restart
a2enmod ssl命令会自动为您创建mods-enabled/ssl.conf和mods-enabled/ssl.load的符号链接,因此您不需要手动创建它们。您可以使用apache2ctl -M | grep ssl来确认该模块已被加载。
第 4 步:通过 Apache Admin 添加 SSL 虚拟主机
以管理员用户登录 Sentora,然后依次进入Admin > Module Admin > Apache Admin。将以下内容粘贴到Global Sentora entry框中,并根据您的安装环境调整文件路径和主机名:
##################################################
# Apache vhost configuration for Sentora
# Adds an HTTPS virtual host that uses your cert
##################################################
<VirtualHost *:443>
ServerAdmin zadmin@localhost
DocumentRoot "/etc/sentora/panel/"
ServerName panel.example.com
ServerAlias sentora.example.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/yourdomain.crt
SSLCertificateKeyFile /etc/apache2/ssl/yourdomain.key
SSLCertificateChainFile /etc/apache2/ssl/yourdomain.ca-bundle.crt
# Modern TLS only. SSLv2, SSLv3, TLS 1.0 and TLS 1.1
# are deprecated and unsafe (POODLE, BEAST).
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES:!RC4
SSLCompression off
</VirtualHost>
将panel.example.com和文件名替换为您实际的主机名和证书路径。保存该条目。Sentora 会在守护进程下次同步时(以及保存时)重写 Apache 配置,因此不要直接编辑/etc/apache2/sites-available:面板会覆盖它。
关于 SSLProtocol SSLv3:较旧的 Sentora 教程,包括本教程的早期版本,会在 Apache Admin 框中粘贴SSLProtocol SSLv3。请不要使用这个值。自 2014 年POODLE漏洞披露以来(CVE-2014-3566),SSL 3.0 已被破解,并且已在每个现代浏览器中被禁用;强制使用 SSLv3 的 Apache 虚拟主机会拒绝现代客户端的连接,即使旧客户端接受了该协议,连接依然不安全。上面的代码块将 Apache 限定为仅使用 TLS 1.2 和 1.3,这是当前安全的基准配置。
第 5 步:重启 Apache
保存 Apache Admin 条目后,测试配置并重新加载该服务:
sudo apache2ctl configtest
sudo service apache2 restart
如果configtest报告Syntax OK,则新的虚拟主机已生效。通过https://panel.example.com打开面板并检查锁形图标。
可选:通过 Sencrypt 模块使用 Let’s Encrypt
如果您不需要付费证书,社区维护的Sencrypt模块(由 Sentora 的一位原始开发者维护于TGates71/sencrypt)可以为面板和托管的域名签发并自动续期免费的 Let’s Encrypt 证书。部分 Sentora 安装包已内置该模块,其他情况下则可作为独立插件安装;安装后,进入Admin > Module Admin > Sencrypt SSL(对于托管站点,则是在域名管理下的Sencrypt),选择域名,然后运行签发操作。Sencrypt 会针对 80 端口执行 HTTP-01 挑战验证,并自动将生成的证书、密钥和证书链部署到位。该域名的 DNS 必须已经解析到该服务器,挑战才能成功。
测试 SSL 安装情况
重启 Apache 后,通过https://打开您的网站并检查锁形图标。要进行更深入的检查,确认中间证书链和协议支持情况,请使用我们的SSL 检测工具对主机名进行检测。如果报告显示缺少中间证书,请重新打开Apache Admin,确认SSLCertificateChainFile中的路径指向您在第 2 步中复制的 CA 证书包,保存后再次重启 Apache。
常见问题
过去几年官方 Sentora 的开发速度已大幅放缓。sentora/sentora-core仓库上最新的稳定版本是 2024 年 5 月发布的v2.0.2(PHP 7.4),而针对 PHP 8.x 的2.1.x分支仍被标记为仅限开发用途,没有长期支持(LTS)或活跃的安全更新发布线。社区分叉版本Sentora-NG确实存在,但规模较小。大多数寻求维护活跃的开源继任产品的管理员会转向HestiaCP;Plesk是获取商业支持时的通常选择。现有的 Sentora 安装仍可正常工作,且上述 SSL 工作流程仍能安装有效的证书。
Sentora 并未对第三方证书强制规定固定存放位置。本指南使用的约定是/etc/apache2/ssl/yourdomain.crt、yourdomain.key和yourdomain.ca-bundle.crt,并在您通过Apache Admin添加的虚拟主机中引用。由社区Sencrypt Let’s Encrypt 模块签发的证书则存放在该模块自己的数据目录下,并自动接入 Apache 配置。
SSL 3.0 在 2014 年被POODLE攻击破解(CVE-2014-3566),并且多年前已从每个主流浏览器中移除。设置SSLProtocol SSLv3会强制 Apache 只协商该协议,导致现代客户端无法连接,而任何仍能连接的客户端也会暴露在风险之中。请使用SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1以仅允许 TLS 1.2 和 1.3,这是目前安全的基准配置。
不需要。sudo a2enmod ssl会自动在/etc/apache2/mods-enabled/下为您创建ssl.conf和ssl.load这两个符号链接。较旧的 Sentora 教程中列出了单独的ln -s命令,但它们只是重复了a2enmod已经完成的工作。运行apache2ctl -M | grep ssl可以确认该模块已被加载。
您可以这样做,但更改无法保留。Sentora 每次同步时都会根据其自身的模板重新生成 Apache 配置,并会覆盖您手动放入/etc/apache2/sites-available中的任何内容。请使用Apache Admin模块的Global Sentora entry来设置全局指令,或使用单个站点对应的域名条目,这样 Sentora 在重写配置时会保留您添加的内容。
最常见的原因是 Apache Admin 条目中的SSLCertificateChainFile路径缺失或错误。请确认该路径指向您在第 2 步中复制的 CA 证书包文件,并且该证书包包含您域名证书与根证书之间的每一个中间证书,每个证书块都以BEGIN CERTIFICATE和END CERTIFICATE标记为边界。保存 Apache Admin 条目,重启 Apache,然后重新运行我们的SSL 检测工具。


