最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何为Apache单个虚拟主机配置专属的SSL证书
时间:2026-07-14 08:58:56 编辑:袖梨 来源:一聚教程网
关键在于为每个块单独指定证书、私钥及证书链路径,确保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> 块**:
<VirtualHost *:443> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com<pre class="brush:php;toolbar:false;">SSLEngine onSSLCertificateFile /etc/httpd/ssl/example.com/example.com.crtSSLCertificateKeyFile /etc/httpd/ssl/example.com/example.com.keySSLCertificateChainFile /etc/httpd/ssl/example.com/chain.pem# 推荐加固(可选)SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1SSLCipherSuite 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)。
相关文章
- 如何注销悦通行账号 07-15
- 《神探杰克鼠》鼩鼱告急的蛛丝马迹成就解锁指南 07-15
- 蚂蚁新村今天正确答案1.13 07-15
- 蚂蚁新村2026年1月13日答案最新 07-15
- 小鸡答题今天的答案是什么2026年1月14日 07-15
- 2026年1月14日小鸡庄园答案 07-15