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

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

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

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

3 ответа

Недавно я составил короткий сценарий, чтобы сделать то же самое, что вы пытаетесь выполнить, вот соответствующие части. Имейте в виду, что в конце вы получите ошибку, так как 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 Core (включая PowerShell). Недавно я столкнулся с проблемой с клиентом, где Set-WSManQuickConfig Командлет неправильно идентифицировал действительный сертификат SSL в хранилище сертификатов.

Я понимаю, что этот пост старый, но я хотел поделиться решением, которое я придумал. В нашем центре сертификации я создал шаблон сертификата, который обновляется с тем же ключом. настройки совместимости должны быть CA server 2012 R2 или выше, чтобы получить возможность продления с тем же ключом. Я сделал автоматическую регистрацию сертификата.

вот сценарий, который я собрал. Я создал пакет SCCM, который запускает его по расписанию.

      if (dir wsman:\localhost\listener | where {$_.Keys -like "Transport=https*"})
{
Write-Host "Already enabled"
exit
}
Else
{
#Variables
$zone = ".yourdomain.com"
$fqdn = "$env:computername$zone"
$Thumbprint = certutil -store My "Cert Template Name" | findstr /c:"Cert Hash(sha1)"
# removing cert hash(sha1): and the space after it
$discard,$keep=$Thumbprint.split(":")
$TP = $Keep -replace '\s',''
#enable WinRM HTTPS
winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="'"$fqdn"'"; CertificateThumbprint="'"$TP"'"}'
}

Надеюсь, это поможет всем, кто хочет внедрить эту область в широком масштабе.

Другие вопросы по тегам