Linux 怎么为多个域名配置不同的 SSL 证书双向加密

夜辰大大_2771

夜辰大大_2771

2026-08-06

474人浏览

原创

nginx为多个域名配置不同ssl证书并启用mtls,本质是sni多证书(按域名切换服务端证书)与统一客户端证书校验的叠加;不支持per-domain ca列表,需应用层解析host头和客户端证书实现精细化策略。

linux 怎么为多个域名配置不同的 ssl 证书双向加密

Linux 上为多个域名配置不同的 SSL 证书并启用双向加密(mTLS),本质上是两件事的叠加:一是基于 SNI 实现多域名多证书的单向 HTTPS,二是为每个域名单独启用客户端证书校验。这不是 Nginx 或 Apache 的默认行为,需明确区分服务端证书(按域名匹配)和客户端证书(统一或分域校验),且二者逻辑层级不同。

明确双向加密的核心逻辑

双向 TLS(mTLS)要求:服务端提供自己的证书(server certificate),同时强制客户端提供并验证其证书(client certificate)。它不等于“给每个域名配一套独立的双向链路”,而是:
✅ 服务端证书可以按域名动态切换(靠 SNI);
❌ 客户端证书验证通常由全局 CA 信任链控制,Nginx/Apache 不支持 per-server-name 的 client CA 列表(即不能让 shop.example.com 只认 A 根,而 api.example.com 只认 B 根);
⚠️ 真正的“每域名独立双向认证”需靠应用层(如后端服务)解析 TLS 握手后的客户端证书 Subject,并结合请求 Host 头做路由级判断。

Nginx 实现多域名 + 各自服务端证书 + 统一客户端校验

这是最常用、最稳妥的落地方式。所有域名共用同一套客户端 CA 信任链,但各自使用专属服务端证书:

Linux Distros
Linux Distros

Linux发行版游乐场,适用于需要临时Linux沙箱、基于浏览器的Linux虚拟机、一次性终端环境、桌面Linux会话等场景

下载
  • 确保 Nginx ≥ 1.15.9(SNI 多证书支持)
  • 每个 server 块独立配置 ssl_certificate 和 ssl_certificate_key
  • 在所有需要双向认证的 server 块中,统一添加:
    ssl_client_certificate /etc/nginx/ssl/ca-bundle.crt;<br>ssl_verify_client on;<br>ssl_verify_depth 2;
  • 可选:用 ssl_ciphers 强制包含 ECDHE-ECDSA 或 ECDHE-RSA,确保兼容主流客户端证书签名算法

Apache 实现类似效果(需 mod_ssl)

Apache 不支持 SNI 动态证书切换(依赖 OpenSSL 版本与编译选项),但可通过虚拟主机 + 多监听端口或 IP 绑定实现多证书。双向加密配置更直观:

  • 每个 <virtualhost></virtualhost> 块设置独立 SSLCertificateFile 和 SSLCertificateKeyFile
  • 统一启用客户端验证:
    SSLVerifyClient require<br>SSLVerifyDepth 2<br>SSLCACertificateFile /etc/apache2/ssl/client-ca.crt
  • 若需差异化策略(如仅 admin.example.com 要求 mTLS,其他域名只需单向),可在对应 VirtualHost 中开启,其余保持 SSLVerifyClient optional 或关闭

真正分域名的客户端证书策略(需应用层介入)

当业务要求严格隔离——例如客户 A 的设备证书只能访问 client1.brandpartner.net,客户 B 的只能访问 client2.brandpartner.net——Nginx/Apache 本身无法按 SNI 匹配不同 CA Bundle。可行方案是:

  • 服务端证书仍按域名区分(SNI 正常工作)
  • 客户端证书验证设为 optional(Nginx)或 SSLVerifyClient optional_no_ca(Apache),把原始证书信息透传给后端
  • 通过 ssl_client_cert(Nginx)或 %{SSL_CLIENT_CERT}e(Apache)将 PEM 编码的客户端证书作为 HTTP Header 传递
  • 后端服务(如 Node.js/Python/Java)收到请求后,解析 Header 中的证书,提取 CN/O/OU 等字段,再根据 Host 头决定是否放行

不复杂但容易忽略:服务端证书必须由可信 CA 签发(或客户端已预置根证书),而客户端证书的验证逻辑,最终要落在业务身份归属上,不是 Web 服务器能全自动完成的。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux ssl

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.08.15

437

5

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

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

2023.09.08

900

5

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

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

2023.09.19

2812

5

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

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

2023.10.09

936

5

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

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

2023.10.17

849

5

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

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

2023.10.17

434

3

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

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

2023.10.18

2556

4

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

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

2023.10.20

4712

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习