Назад | Перейти на главную страницу

Автоматически перенастроить прослушиватель WinRM HTTPS с новым сертификатом?

Я хочу включить прослушиватели WinRM HTTPS на всех наших серверах для безопасной связи при использовании CredSSP между серверами, чтобы обойти проблема с двойным прыжком.

Настроить это нормально, у нас есть сертификаты, соответствующие CN, от внутреннего ЦС, поэтому первоначальная настройка слушателей в порядке и отлично работает. Единственное, что эти сертификаты действительны только в течение 1 года, поэтому по истечении срока их действия нам нужно будет повторно настроить слушателей на каждом сервере, так как автоматическая регистрация сертификатов сервера не изменяет отпечаток сертификата в конфигурации WinRM. .

Кто-нибудь встречал хорошее решение этой проблемы?

Недавно я собрал небольшой сценарий, чтобы сделать то же самое, что и вы, вот соответствующие части. Имейте в виду, что в конце вы получите сообщение об ошибке, так как Invoke-Command собирается сбросить службу WinRM, пока вы ждете результата команды Restart-Service ...

$yourCred = Get-Credential domain\account
$yourServer = "your.server.fqdn"

$LatestThumb = Invoke-Command -ComputerName $yourServer `
                            -Credential $yourCred `
                            -ScriptBlock {
                                Get-ChildItem -Path Cert:\LocalMachine\My |
                                where {$_.subject -match "CN=$yourServer"}
                                Sort-Object -Property NotAfter |
                                Select-Object -Last 1 -ExpandProperty Thumbprint
                            }

Set-WSManInstance -ResourceURI winrm/config/Listener `
                  -SelectorSet @{Address="*";Transport="HTTPS"} `
                  -ComputerName $yourServer `
                  -Credential $yourCred `
                  -ValueSet @{CertificateThumbprint=$LatestThumb}

Invoke-Command -ComputerName $yourServer `
               -Credential $yourCred `
               -ScriptBlock { Restart-Service -Force -Name WinRM }

Это работает против Server 2008 R2 с Posh v3. Могу поспорить, что это работает против Server 2012, но может потребоваться некоторая работа для v2.

Обычно вы используете Set-WSManQuickConfig -UseSSL команда для настройки SSL-сертификата в службе WinRM. В качестве альтернативы вы можете вручную использовать Set-Item для настройки отпечатка в службе WinRM. См. Пример ниже.

Set-Location -Path WSMan:\localhost\Service;
Set-Item -Path .\CertificateThumbprint -Value 'THUMBPRINT';

НОТА: Убедитесь, что вы развертываете последнюю версию ядра Windows Management Framework (включая PowerShell). Недавно я столкнулся с проблемой с клиентом, когда Set-WSManQuickConfig командлет неправильно определял действительный сертификат SSL в хранилище сертификатов.