Я пытаюсь завершить автоматизированный скрипт сборки моего веб-сервера, работающего под управлением Windows 2012 и имеющего два SSL-сайта, каждый из которых имеет свой собственный цифровой сертификат.
Я использую SNI, который отлично работает, когда я настраиваю его вручную, но когда я использую APPCMD для настройки той же конфигурации, я не могу понять, как выбрать сертификат для сайтов в привязке.
При ручном подходе есть выпадающий список, который вы используете для выбора сертификата. Я ищу эквивалент командной строки для выбора сертификата из этого списка.
Кто-нибудь знает, как это сделать?
решение1
Я не знаю насчет appcmd, я считаю это устаревшим инструментом, который я больше не рекомендую использовать.
В PowerShell SNI указывается с помощью параметра SSlFlags, 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" выше. Надеюсь, это поможет кому-нибудь в будущем.
С уважением,
Объявления