Reconfigure automaticamente o ouvinte HTTPS WinRM com o novo certificado?

4

Estou tentando habilitar os ouvintes HTTPS do WinRM em todos os nossos servidores para uma comunicação segura ao usar o CredSSP entre os servidores para contornar o double -hop issue .

Configurar isto está bem , nós temos certificados apropriados do CN de um CA interno assim a instalação inicial dos ouvintes está bem e trabalha grande. A única coisa é que esses certificados são válidos apenas por 1 ano, portanto, assim que expirarem, precisaremos reconfigurar os ouvintes em cada servidor, pois o registro automático dos certificados do servidor não modifica a impressão digital do certificado na configuração do WinRM. .

Alguém encontrou uma boa solução para esse problema?

    
por Jared 17.04.2014 / 04:34

2 respostas

2

Você normalmente usaria o comando Set-WSManQuickConfig -UseSSL para configurar o certificado SSL no serviço WinRM. Como alternativa, você pode usar manualmente Set-Item para configurar a impressão digital no serviço WinRM. Veja abaixo um exemplo.

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

OBSERVAÇÃO : verifique se você está implantando a versão mais recente do Núcleo do Windows Management Framework (inclui o PowerShell). Recentemente, encontrei um problema com um cliente em que o cmdlet Set-WSManQuickConfig não identificou corretamente um certificado SSL válido no armazenamento de certificados.

    
por 23.04.2014 / 15:46
2

Eu recentemente criei um pequeno script para fazer a mesma coisa que você está tentando realizar, aqui estão as partes relevantes. Esteja ciente de que você receberá um erro no final, pois o Invoke-Command irá redefinir o serviço WinRM enquanto você está aguardando o resultado do comando 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 }

Isso está sendo executado no Server 2008 R2, com o Posh v3. Eu apostaria que funciona contra o Server 2012, mas pode precisar de algum trabalho para v2.

    
por 21.08.2014 / 02:23