☰
IIS多二级域名HTTPS配置与SNI技术实战
2026/10/28 13:28:25 网站建设 项目流程

1. IIS多二级域名HTTPS配置实战指南

在Windows Server环境下使用IIS搭建Web服务时,经常需要为多个二级域名配置HTTPS加密连接。这种场景常见于企业门户网站(如www.example.com)、API接口服务(api.example.com)和移动端专用站点(m.example.com)等需要独立SSL证书的情况。本文将详细介绍如何通过SNI(服务器名称指示)技术实现单个服务器托管多个HTTPS站点。

关键提示:从Windows Server 2012 R2开始,IIS 8.5+已原生支持SNI技术,这是实现多域名HTTPS的基础条件。

1.1 准备工作清单

在开始配置前,请确保已准备好以下要素:

  • 有效的域名解析(如DNS中将api.example.com和m.example.com都指向服务器IP)
  • 每个二级域名对应的SSL证书(可以是多域名证书或独立证书)
  • 服务器管理员权限
  • 已安装IIS角色并启用URL Rewrite模块

2. 证书申请与安装流程

2.1 证书类型选择策略

根据二级域名的数量和管理需求,通常有三种证书方案:

证书类型适用场景优缺点对比
单域名证书仅1-2个二级域名成本低但扩展性差
多域名SAN证书3-5个关联子域名一次管理多个域名,性价比较高
通配符证书动态增加的*.example.com类子域名管理方便但价格较高

以申请Let's Encrypt免费证书为例,使用Certbot工具批量获取证书:

certbot certonly --manual --preferred-challenges dns -d example.com -d api.example.com -d m.example.com

2.2 IIS证书导入步骤

  1. 打开MMC控制台 → 添加/删除管理单元 → 选择"证书" → 计算机账户
  2. 右键"个人"证书存储 → 所有任务 → 导入
  3. 选择包含私钥的.pfx文件,输入保护密码
  4. 关键步骤:务必勾选"标记此密钥为可导出"(便于备份迁移)

3. IIS站点绑定详细配置

3.1 主站点基础配置

  1. 打开IIS管理器 → 右键"网站" → 添加网站
  2. 填写站点名称(如"PrimarySite")
  3. 指定物理路径(建议使用不同文件夹区分各子站)
  4. 在绑定类型中选择https
  5. 从SSL证书下拉菜单选择对应证书

常见陷阱:如果下拉菜单中看不到证书,请检查证书是否导入到"个人"存储区,且包含私钥。

3.2 二级域名绑定技巧

对于api.example.com的特别配置:

  1. 重复上述添加网站流程
  2. 在主机名处填写完整二级域名(api.example.com)
  3. 必须勾选"需要服务器名称指示(SNI)"
  4. 选择该域名专属的SSL证书

配置验证方法:

Get-WebBinding | Select protocol, bindingInformation

正常应显示类似:

https *:443:api.example.com https *:443:m.example.com

4. 高级优化与故障排查

4.1 HTTP自动跳转HTTPS

通过URL重写模块实现全站强制HTTPS:

  1. 安装URL Rewrite模块(Web平台安装器搜索安装)
  2. 在站点根目录创建web.config文件
  3. 添加以下规则:
<rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" /> </rule>

4.2 常见错误解决方案

错误1:ERR_SSL_VERSION_OR_CIPHER_MISMATCH
  • 原因:客户端不支持服务器配置的加密套件
  • 解决:在IIS Crypto工具中启用TLS 1.2,禁用老旧协议
错误2:HTTPS访问显示默认站点
  • 检查步骤:
    1. 确认所有站点绑定中未保留空的https绑定
    2. 使用netsh http show sslcert检查端口冲突
    3. 重启HTTP服务:iisreset /noforce
错误3:证书链不完整
  • 修复方法:
    1. 下载中间证书(CA Bundle)
    2. 通过MMC控制台将中间证书导入"中间证书颁发机构"存储

5. 性能调优建议

5.1 启用OCSP装订(Stapling)

减少证书验证延迟:

  1. 打开IIS管理器 → 服务器节点 → 配置编辑器
  2. 定位到system.webServer/security/ocsp
  3. 设置enableStapling="true"
  4. 设置refreshInterval="06:00:00"

5.2 会话恢复配置

提升HTTPS连接效率:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL' -Name 'ServerCacheTime' -Value 86400

5.3 证书自动续期方案

对于Let's Encrypt等短期证书,建议配置自动化任务:

  1. 创建renew-cert.ps1脚本:
certbot renew --quiet --post-hook "iisreset /noforce"
  1. 设置计划任务每月执行:
$Trigger = New-ScheduledTaskTrigger -Monthly -At 3am Register-ScheduledTask -TaskName "CertRenew" -Trigger $Trigger -Action (New-ScheduledTaskAction -Execute "Powershell.exe" -Argument "-File C:\scripts\renew-cert.ps1")

实际部署中发现,当二级域名超过5个时,建议考虑以下优化:

  • 使用通配符证书减少管理成本
  • 配置ARR(应用程序请求路由)实现反向代理
  • 对静态资源启用CDN加速

有个特别容易忽略的细节:在Windows Server Core版本中,需要通过命令行工具完成所有配置:

New-WebBinding -Name "ApiSite" -Protocol https -HostHeader api.example.com -Port 443 -SslFlags 1

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询