Windows 2012 Server Core: меняем с помощью PowerShell сертификат на службе удалённого управления IIS (WMSvc)
Практикуюсь на использовании Windows 2012 без GUI, в core. Естественно – через PowerShell. Встала простейшая на первый взгляд задача – заменить сертификат службе удалённого управления IIS (WMSvc). Через GUI она решается в 5 минут. Но через PowerShell решение искал долго, и чисто из-за того, что до этого не использовал провайдеры PowerShell IIS:
и cert:
.
Приведу решение по шагам. Управляю с удалённого сервера (дабы использовать PowerShell ISE, ведь и его в core нет), поэтому в первую очередь подключаюсь к сессии на управляемом сервере:
Enter-PSSession -ComputerName CA.CSM.NOV.RU
Теперь найду сертификат уже среди полученных, который выдан на сервер и может быть использован для подтверждения подлинности сервера:
$cert = Get-ChildItem Cert:\localmachine\my ` | ? { ( $_.Subject -eq 'CN=ca.csm.nov.ru' ) ` -and ( $_.EnhancedKeyUsageList ` | ? { $_.ObjectId -eq '1.3.6.1.5.5.7.3.1' } ) }
Указанный ObjectId
– именно назначение сертификата “Подтверждение подлинности сервера”. Итак, сертификат мы выбрали. Теперь осталось его “применить” для службы WMSvc. Для начала удалим текущие настройки SSL для службы WMSvc, если они есть:
Remove-Item -Path 'IIS:\SslBindings\0.0.0.0!8172'
Служба WMSvc привязана именно к порту 8172. А теперь создадим свои параметры SSL для данной привязки:
New-Item -Path 'IIS:\SslBindings\0.0.0.0!8172' -Value $cert
По сути – всё! Осталось перезапустить службу:
Restart-Service WMSvc
И подключения диспетчера IIS к нашему удалённому серверу теперь проходят “на ура”.
Полностью процедура установки компонента удалённого управления IIS, изменения режима запуска службы и выбор нужного сертификата с удалённого сервера выглядит следующим образом:
$ComputerName = 'srv-gate'; Invoke-Command ` -ComputerName $ComputerName ` -ScriptBlock { Import-Module ` Microsoft.PowerShell.Security ` , WebAdministration ` ; if ( -not ( Get-WindowsFeature -Name 'Web-Mgmt-Service' ).Installed ) { Install-WindowsFeature -Name 'Web-Mgmt-Service'; }; Set-Service ` -Name 'WMSvc' ` -StartupType Automatic ` ; Stop-Service 'WMSvc' -Force; $cert = ` Get-ChildItem Cert:\localmachine\my ` | ? { ( $_.Subject -eq "CN=$( $env:COMPUTERNAME ).$( $env:USERDNSDOMAIN )" ) ` -and ( $_.EnhancedKeyUsageList ` | ? { $_.ObjectId -eq '1.3.6.1.5.5.7.3.1' } ) } ` ; Set-Item ` -Path 'IIS:\SslBindings\0.0.0.0!8172' ` -Value $cert ` ; Set-ItemProperty ` -Path HKLM:\SOFTWARE\Microsoft\WebManagement\Server ` -Name EnableRemoteManagement ` -Value 1 ` ; Start-Service 'WMSvc'; Get-ChildItem Cert:\localmachine\my ` | ? { $_.Subject -match 'WMSvc-.+' } ` | Remove-Item ` ; } ` ;
Позднее оформлю в виде модуля…
RSS комментарии
Обратная ссылка