同一端口下的IIS站点如何配置不同的SSL证书?
你遇到的同端口下多站点证书同步覆盖的问题,本质是默认HTTPS绑定未启用*服务器名称指示(SNI)*功能,IIS 8及以上版本开启SNI后即可实现同一端口下不同站点绑定独立证书,具体实现方案如下:
实现前提
- IIS版本≥8.0(Windows Server 2012及以上系统默认搭载,低于该版本无法支持SNI,只能使用通配符/多域名证书实现同端口多HTTPS站点)
- 每个站点需配置独立的主机头(域名),不支持无主机头、直接通过IP访问的站点单独配置证书
- 所有站点对应的SSL证书已提前导入到本地计算机的「个人」证书存储区
PowerShell 配置步骤
首先查询已导入证书的指纹,执行以下命令获取所有证书的对应信息,记录目标证书的
Thumbprint(指纹)值:Get-ChildItem -Path Cert:\LocalMachine\My | Select-Object FriendlyName, Thumbprint, Subject逐一对站点进行启用SNI+绑定独立证书的操作,参考命令模板如下,替换对应参数即可:
# 定义站点配置参数 $siteName = "你的站点名称" $domain = "站点绑定的域名" $certThumbprint = "对应证书的指纹(删除所有空格)" $port = 443 # 移除站点原有同端口的HTTPS绑定 Get-WebBinding -Name $siteName -Protocol https -Port $port | Remove-WebBinding # 新增启用SNI的HTTPS绑定,-SslFlags 1即为启用SNI的标识 New-WebBinding -Name $siteName -Protocol https -Port $port -HostHeader $domain -SslFlags 1 # 为绑定分配对应证书 $targetBinding = Get-WebBinding -Name $siteName -Protocol https -Port $port -HostHeader $domain $targetBinding.AddSslCertificate($certThumbprint, "My")
注意事项
- 不支持SNI的老旧客户端(如Windows XP系统的IE6、安卓4.4以下版本的系统浏览器)无法访问启用了SNI的站点,若需兼容这类设备,只能使用覆盖所有站点域名的通配符证书或SAN多域名证书
- 若存在无主机头、直接用IP访问的站点,该站点无法启用SNI,且其绑定的证书会覆盖同IP同端口下所有未启用SNI的站点的证书配置
内容的提问来源于stack exchange,提问作者PowershellScripter
相关产品推荐
相关产品推荐

