用于在 Windows 2012 上设置 IIS 上的 SNI 的命令行

用于在 Windows 2012 上设置 IIS 上的 SNI 的命令行

我正在尝试完成我的 Web 服务器的自动构建脚本,该服务器运行 Windows 2012 并有两个 SSL 网站,每个网站都有自己的数字证书。

我正在使用 SNI,当我手动设置时它可以正常工作,但是当我使用 APPCMD 设置相同的配置时,我无法弄清楚如何为绑定中的站点选择证书。

使用手动方法时,可以使用下拉列表来选择证书。我正在寻找与从该列表中选择证书等效的命令行。

有人知道你是怎么做到的吗?

答案1

我不知道 appcmd,我认为那是一个不建议再使用的遗留工具。

在 PowerShell 中,您可以使用 SSlFlags 参数指示 SNI,0 表示无 SNI,1 表示设置 SNI。

New-WebBinding -Name site1.local -Port 443 -Protocol https -SslFlags 0
New-WebBinding -Name site2.local -Port 443 -Hostheader site2.local -Protocol https -SslFlags 1

要分配现有证书,请首先获取证书的指纹和 GUID,然后使用 netsh

$thumb = (Get-ChildItem cert:\LocalMachine\MY | where-object { $_.FriendlyName -match "site2" } | Select-Object -First 1).Thumbprint
$guid = [guid]::NewGuid()
& netsh http add sslcert hostnameport=site2.local:443 certhash=$thumb appid=`{$guid`} certstorename=MY

对于不使用 SNI 的站点:

$thumb = (Get-ChildItem cert:\LocalMachine\MY | where-object { $_.FriendlyName -match "site1" } | Select-Object -First 1).Thumbprint
$guid = [guid]::NewGuid()
& netsh http add sslcert ipport=0.0.0.0:443 certhash=$thumb appid=`{$guid`} certstorename=MY

答案2

这是我对自己的问题找到的答案...

我需要使用以下语法的 netsh:-

netsh http add sslcert hostnameport=www.shifts.org.uk:443 certstorename=MY certhash=<put your hash here> appid={<put your app ID here>}

我之前遗漏的关键部分是上面称为“hostnameport”的参数。我希望这能对将来的某些人有所帮助。

问候,

广告

相关内容