服务器名称指示
IBM® HTTP Server 的服务器名称指示 (SNI) 支持将允许您根据 TLS 客户机发送的 SNI 扩展名来选择证书。此支持允许您使用基于名称的虚拟主机中其他与握手相关的设置。
SNI 的定义
- 每个具有匹配的地址规范(例如“*:443”)的虚拟主机都会组成一个基于名称的虚拟主机组。
- 基于名称的虚拟主机组中列示的第一个虚拟主机是缺省虚拟主机。
SNI 的要求
- 缺省虚拟主机必须指定 SSLServerCert 伪指令的 SNI 自变量。
- 只有那些具有单个地址规范(例如“*:443”)的虚拟主机才能参与 SNI。
- 基于名称的虚拟主机的非缺省虚拟主机不得包含此模块中除 SSLServerCert 之外的伪指令。
- “invalid”是保留的服务器名称。虚拟主机不得指定“ServerName invalid”。
SNI 的格式
存在两种格式的 SNI:
- 在第一种格式的 SNI 中,仅使用单个虚拟主机,并且使用 SSLSNIMap 伪指令在主机名与证书标签之间进行映射。
<virtualhost *:443> ServerName example.com SSLEnable SNI SSLServerCert default SSLSNIMap a.example.com sni1-rsa SSLSNIMap a.example.com sni1-ecc SSLSNIMap b.example.com sni2 </virtualhost>
- 在第二种格式的 SNI 中,将创建一系列虚拟主机,并通过 ServerName、非通配 ServerAlias 以及 SSLServerCert 在主机名与证书标签之间进行映射。
<virtualhost *:443> ServerName example.com SSLEnable SNI </virtualhost> <virtualhost *:443> ServerName a.example.com SSLEnable SSLServerCert sni1 </virtualhost> <virtualhost *:443> ServerName b.example.com ServerAlias other.example.com SSLEnable SSLServerCert sni2 </virtualhost>