跳转到内容

IIS 绑定、主机头与 SNI:一个 IP 托管多个站点

核验于 2 分钟阅读

理解 IP:端口:主机头 绑定,添加多个 HTTP/HTTPS 站点,正确使用 SNI,并定位绑定冲突与证书名称错误。

测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1
版本号
26100.33650
版本
Standard / Datacenter
架构
x64
支持
文档(E1)
证据
E1官方文档
核验日期
2026-10-29
测试机
IIS Manager UI 参考:VM 361 Windows 11 26H2;Lab 站点 :8080 绑定;Server 2025 cmdlet 为 E1
页面类型
任务
IIS 管理器的 Lab 站点绑定对话框:http、8080 端口、所有未分配 IP。
VM 361 的 Lab 站点绑定:http、8080、IP *、无主机头。这是最简单的实验情形;主机头/SNI 是下一步。Windows 11 UI 参考;Server 2025 步骤 E1。

IIS 绑定是:

协议 IP:端口:主机头
http *:80:lab.internal
https *:443:lab.internal + SNI + 证书
  • IP 可以是 *(全部)、具体地址或通配。
  • 端口区分端点,不是站点。
  • 主机头让多个 HTTP 站点共享 *:80。
  • SNI 让 HTTPS 也按主机名选证书;没有 SNI,一个 IP:端口只能有一张证书。

一个主机名一个站点,不要一个文件夹一个站点。同一主机下的路径用应用。

终端窗口
Import-Module WebAdministration
New-WebBinding -Name 'Lab' -Protocol http -Port 8081 -HostHeader 'lab.local'
Get-WebBinding -Name 'Lab'

在服务器上用 Host 头测试:

终端窗口
curl.exe -H "Host: lab.local" http://127.0.0.1:8081/

不带头的 curl http://127.0.0.1:8081/ 可能落到另一个站点或默认站点。这就是“localhost 行、域名不行”的常见原因。

没有 SNI 时,IIS 把证书绑到 IP:端口。有 SNI 时,客户端在 TLS 握手发主机名,IIS 选证书。

终端窗口
New-WebBinding -Name 'Lab' -Protocol https -Port 443 -HostHeader 'lab.example' -SslFlags 1

SslFlags 1 表示启用 SNI。然后绑证书(哈希从 Get-ChildItem Cert:\LocalMachine\My 取):

终端窗口
netsh http add sslcert hostnameport=lab.example:443 `
certhash=<thumbprint> appid={4dc3e181-e14b-4a21-b022-59fc669b0914} `
certstorename=MY

SNI 用 hostname:port。appid 是 IIS 用来标识绑定的任意 GUID;同一站点保持一致。

验证:

终端窗口
netsh http show sslcert hostnameport=lab.example:443
curl.exe --resolve lab.example:443:127.0.0.1 https://lab.example/ -k

--resolve 让测试打到本机 IIS,不管公网 DNS;-k 接受实验证书,生产不要养成习惯。

HTTP:先匹配协议/端口/IP,再匹配 Host 头。没有主机头匹配时,可能落到无主机头的站点(常见 Default Web Site)。

HTTPS + SNI:主机名决定证书。不匹配会:

  • 客户端证书名称警告(看到错误名字);
  • 落到错误站点返回 404;
  • 没有匹配的 SNI 绑定时握手失败。
现象 可能原因
400 Bad Request 重复/非法绑定;主机头格式错
域名 404、localhost 200 请求落到 Default Web Site
证书名称不匹配 证书 SAN 不含该主机名
“文件已存在” 同一 IP:端口:主机 重复绑定
只有一个站点 HTTPS 正常 没 SNI / 一个 IP:端口一张证书
内网行、外网不行 DNS/防火墙/NAT,不是 IIS
  1. 一个主机名一个站点;一个隔离边界一个应用池。
  2. HTTP 和 HTTPS 用同一主机名。
  3. 证书 SAN 覆盖该绑定的所有名字。
  4. Default Web Site 停掉或有意绑定。
  5. 用 Host 头/--resolve 测,不要只测 localhost。
  6. 记录每个 IP:端口:主机 和证书指纹。

截图是 Windows 11 26H2、仅 HTTP、8080。HTTPS/SNI 与 Server 2025 角色行为是 E1,等 Server 2025 VM 和证书实验再升级。

来源