关键在于为每个块单独指定证书、私钥及证书链路径,确保ServerName与证书域名完全匹配,并正确设置文件权限与Apache模块启用,最后通过configtest验证并重载服务。

为 Apache 单个虚拟主机配置单独的 SSL 证书,关键在于让该站点独享一套证书文件,并与其他站点隔离,避免证书冲突或路径混用。这在多域名、多客户共用一台服务器时尤其常见。
确认 Apache 支持 SNI 并启用 mod_ssl
Apache 2.2.12+ 默认支持 SNI(Server Name Indication),允许多个 HTTPS 虚拟主机共用 443 端口但使用不同证书。需确保:
- 运行
httpd -v或apache2 -v,版本不低于 2.2.12(推荐 2.4.8+) - 执行
apachectl -M | grep ssl,输出含ssl_module (shared) - 如未启用:CentOS/RHEL 运行
sudo a2enmod ssl或确认LoadModule ssl_module modules/mod_ssl.so已在主配置中取消注释
为该虚拟主机准备专属证书文件
不要复用其他站点的证书。为当前域名生成或获取独立证书包(如 Let’s Encrypt 的 certbot --cert-name example.com),确保包含:
- 域名证书(
example.com.crt或fullchain.pem) - 私钥(
example.com.key,权限严格设为600) - 证书链(
chain.pem;若用 Let’s Encrypt,fullchain.pem已含链,可不单独配SSLCertificateChainFile)
统一存入专属目录,例如:/etc/httpd/ssl/example.com/(CentOS)或/etc/ssl/certs/example.com/(Ubuntu)
单独编写 <virtualhost></virtualhost> 块
在站点专属配置文件中(如 /etc/httpd/conf.d/example.com.conf),写明完整 HTTPS 配置,**不与其他站点混用同一 <virtualhost></virtualhost> 块**:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<pre class="brush:php;toolbar:false;">SSLEngine on
SSLCertificateFile /etc/httpd/ssl/example.com/example.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/example.com/example.com.key
SSLCertificateChainFile /etc/httpd/ssl/example.com/chain.pem
# 推荐加固(可选)
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
注意:ServerName 必须与证书中 Subject 或 SAN 字段完全匹配,否则浏览器会报“证书不匹配”警告。
禁用 HTTP 访问并重定向到 HTTPS
在同一配置文件中补充 80 端口重定向,确保用户始终走加密连接:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>完成后,检查语法:sudo apachectl configtest,无误则重启服务:sudo systemctl restart httpd(或 apache2)。

















