我正在嘗試完成我的 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」的參數。我希望這對將來的人有幫助。
問候,
廣告