Ssl

在 IIS 上為 Windows 2012 設置 SNI 的命令行

  • May 14, 2015

我正在嘗試完成我的網路伺服器的自動建構腳本,它執行 Windows 2012 並有兩個 SSL 網站,每個網站都有自己的數字證書。

我正在使用 SNI,當我手動設置它時它工作正常,但是當我使用 APPCMD 設置相同的配置時,我無法弄清楚如何為綁定中的站點選擇證書。

使用手動方法,您可以使用一個下拉列表來選擇證書。我正在尋找相當於從該列表中選擇證書的命令行。

有誰知道你是怎麼做到的?

這是我對自己的問題找到的答案…

我需要使用具有以下語法的 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”的參數。我希望這對將來的某人有所幫助。

問候,

廣告

我不了解 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

引用自:https://serverfault.com/questions/688178