Практикуюсь на использовании 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 `
        ;
    } `
;

Позднее оформлю в виде модуля…

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка