Как назначить SSL-сертификат сайту IIS7 из командной строки

Можете ли вы посоветовать мне, можно ли назначить SSL-сертификат веб-сайту в IIS7 с помощью приложения APPCMD?

Я знаком с командой для установки привязки HTTPS

appcmd set site /site.name:"A Site" /+bindings.[protocol='https',bindingInformation='*:443:www.mysite.com']

и как получить текущие сопоставления

%windir%\system32\inetsrv\Appcmd

но не могу найти способ сопоставить сайт с сертификатом (скажем, например, хэш сертификата)

Ответов (7)

Решение

Ответ - использовать NETSH. Например

netsh http add sslcert ipport=0.0.0.0:443 certhash='baf9926b466e8565217b5e6287c97973dcd54874' appid='{ab3c58f7-8316-42e3-bc6e-771d4ce4b201}'

@ Дэвид и @orip правы.

Однако я хотел упомянуть, что параметр ipport, указанный в примере (0.0.0.0:443), является тем, что MSDN называет «неуказанным адресом (IPv4: 0.0.0.0 или IPv6: [::])».

Я пошел его поискать и решил, что запишу здесь, чтобы сэкономить время кому-то еще. Эта статья посвящена SQL Server, но информация по-прежнему актуальна:

http://msdn.microsoft.com/en-us/library/ms186362.aspx

С помощью PowerShell и модуля WebAdministration вы можете сделать следующее, чтобы назначить SSL-сертификат сайту IIS:

# ensure you have the IIS module imported
Import-Module WebAdministration

cd IIS:\SslBindings
Get-Item cert:\LocalMachine\My\7ABF581E134280162AFFFC81E62011787B3B19B5 | New-Item 0.0.0.0!443

На заметку ... значение 7ABF581E134280162AFFFC81E62011787B3B19B5 - это отпечаток сертификата, который вы хотите импортировать. Поэтому сначала его нужно импортировать в хранилище сертификатов. New-Item Командлет занимает в IP - адрес (0.0.0.0 для всех IP - адресов) и порт.

См. http://learn.iis.net/page.aspx/491/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in/ для получения дополнительных сведений.

Я тестировал это в Windows Server 2008 R2, а также в предварительной версии Windows Server 2012.

Если вы пытаетесь выполнить администрирование IIS без использования графического интерфейса оснастки MMC, вам следует использовать модуль PowerShell WebAdministration.

Другие ответы в этом блоге не работают в более поздних версиях Windows Server (2012).

Использование PowerShell + netsh :

$certificateName = 'example.com'
$thumbprint = Get-ChildItem -path cert:\LocalMachine\My | where { $_.Subject.StartsWith("CN=$certificateName") } | Select-Object -Expand Thumbprint
$guid = [guid]::NewGuid().ToString("B")
netsh http add sslcert ipport="0.0.0.0:443" certhash=$thumbprint certstorename=MY appid="$guid"

Если вам нужна именованная привязка, замените netsh call следующим образом:

netsh http add sslcert hostnameport="$certificateName:443" certhash=$thumbprint certstorename=MY appid="$guid"

Это мне очень помогло: простое руководство Сукеша Ашока Кумара по настройке SSL для IIS из командной строки. Включает импорт / создание сертификата с помощью certutil / makecert .

http://www.awesomeideas.net/post/How-to-configure-SSL-on-IIS7-under-Windows-2008-Server-Core.aspx

РЕДАКТИРОВАТЬ: если исходный URL-адрес не работает, он все еще доступен через Wayback Machine .

Используя ответы из этого поста, я создал единственный сценарий, который помог мне. Он начинается с файла pfx, но вы можете пропустить этот шаг.

Вот:

cd C:\Windows\System32\inetsrv

certutil -f -p "pa$$word" -importpfx "C:\temp\mycert.pfx"

REM The thumbprint is gained by installing the certificate, going to cert manager > personal, clicking on it, then getting the Thumbprint.
REM Be careful copying the thumbprint. It can add hidden characters, esp at the front.
REM appid can be any valid guid
netsh http add sslcert ipport=0.0.0.0:443 certhash=5de934dc39cme0234098234098dd111111111115 appid={75B2A5EC-5FD8-4B89-A29F-E5D038D5E289}

REM bind to all ip's with no domain. There are plenty of examples with domain binding on the web
appcmd set site "Default Web Site" /+bindings.[protocol='https',bindingInformation='*:443:']