在 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」的參數。我希望這對將來的人有幫助。

問候,

廣告

相關內容