讲师中心 微信公众号
AI工具推荐 视频效率加速

Apache 中 mod_ssl 怎么配置SNI支持多域名

大明酱_6007

大明酱_6007

发布时间:2026-09-19 06:31:01

|

454人浏览过

|

来源于php中文网

原创

Apache的mod_ssl不直接实现SNI,而是依赖OpenSSL在ClientHello明文阶段解析SNI域名,再匹配对应VirtualHost并加载证书;需满足OpenSSL≥0.9.8f、客户端支持SNI、每个域名配置独立VirtualHost且明确指定ServerName与证书路径。

apache 的 mod_ssl 本身不实现 sni,而是靠 openssl 在 tls 握手初期读取 clienthello 中的明文域名字段,再由 apache 根据该域名匹配对应的 <virtualhost *:443> 块并加载其证书。配置关键不是“开启 sni 开关”,而是确保整个链路满足 sni 工作前提,并正确组织虚拟主机与证书的绑定关系。

确认基础环境已就绪

缺一不可:

  • Apache 必须加载 mod_ssl.so(检查 httpd -M | grep ssl 或配置中 LoadModule ssl_module modules/mod_ssl.so 未被注释)
  • OpenSSL 版本 ≥ 0.9.8f(生产建议 ≥ 1.0.2 或 1.1.1,Windows 下注意 phpEnv 自带的 libcrypto-1_1-x64.dll 是否真实存在)
  • 客户端支持 SNI(IE6/WinXP、Android 4.0 以下 WebView 等旧环境不支持,现代浏览器和 curl 7.18.1+ 均支持)
  • Apache 配置中不能有多个 <VirtualHost *:443> 绑定同一 IP:Port 却未设 ServerName —— 否则会 fallback 到第一个加载的虚拟主机证书

为每个域名写独立的 VirtualHost 块

不要用 ServerAlias 堆多个域名到一个 HTTPS 虚拟主机里。SNI 要求每个域名有明确归属:

  • 每个域名(如 site-a.testsite-b.test)必须对应一个单独的 <VirtualHost *:443>
  • 每个块内必须设置 ServerName(推荐也加 ServerAlias 补全 www/non-www 变体)
  • 每个块必须指定完整证书路径:SSLCertificateFileSSLCertificateKeyFile,以及可选的 SSLCertificateChainFile(或合并进证书文件)

示例片段(追加到 httpd-vhosts.conf):

SSL
SSL

配置HTTPS,管理TLS证书,并调试安全连接问题。

下载
<VirtualHost *:443>
    ServerName site-a.test
    ServerAlias www.site-a.test
    DocumentRoot "/var/www/site-a"
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/site-a.crt"
    SSLCertificateKeyFile "/etc/ssl/private/site-a.key"
    SSLCertificateChainFile "/etc/ssl/certs/ca-bundle.crt"
</VirtualHost>

<VirtualHost *:443>
    ServerName site-b.test
    ServerAlias www.site-b.test
    DocumentRoot "/var/www/site-b"
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/site-b.crt"
    SSLCertificateKeyFile "/etc/ssl/private/site-b.key"
    SSLCertificateChainFile "/etc/ssl/certs/ca-bundle.crt"
</VirtualHost>

通配符或 SAN 证书的复用方式

若多个子域共用一张通配符证书(如 *.example.com),仍需为每个子域写独立 <VirtualHost>,但证书路径可复用:

  • shop.example.comapi.example.com 可指向同一组 SSLCertificateFileSSLCertificateKeyFile
  • 前提是证书确实包含这些域名(通配符只覆盖一级子域,*.example.com 不覆盖 example.coma.b.example.com
  • 若要同时保护根域,证书需额外加入 example.com 到 SAN(Subject Alternative Name)中

验证 SNI 是否真正生效

别只看浏览器——它会自动 fallback 或缓存。用命令行直击握手层:

  • 查指定域名是否返回对应证书:
    openssl s_client -connect your-server-ip:443 -servername site-a.test -showcerts 2>/dev/null | openssl x509 -noout -text | grep "Subject:"
  • 换域名再试一次,确认 Subject CN 或 SAN 字段变化
  • 去掉 -servername 参数重试,应看到 fallback 证书(即第一个定义的虚拟主机证书)

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

417

2023.08.15

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

820

2023.09.08

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2392

2023.09.19

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

816

2023.10.09

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

709

2023.10.17

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

374

2023.10.17

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2136

2023.10.18

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

3932

2023.10.20

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

0

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Apache Maven 官方安装指南
Apache Maven 官方安装指南

共0课时 | 0人学习

Apache Maven 官方用户中心
Apache Maven 官方用户中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn