Я пытаюсь завершить сценарий автоматической сборки моего веб-сервера, который работает под управлением 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 вы указываете 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