web-dev-qa-db-ja.com

WinRM HTTPSリスナーを新しい証明書で自動的に再構成しますか?

サーバー間でCredSSPを使用して ダブルホップの問題 を回避する場合、安全な通信のためにすべてのサーバーでWinRM HTTPSリスナーを有効にしようとしています。

これの設定は問題ありません 、内部CAからのCNに適した証明書があるため、リスナーの初期設定は問題なく機能します。唯一のことは、これらの証明書は1年間のみ有効であるため、有効期限が切れると、サーバー証明書の自動登録によってWinRM構成の証明書の拇印が変更されないため、各サーバーでリスナーを再構成する必要があります。 。

誰かがこの問題の素晴らしい解決策を見つけましたか?

4
Jared

最近、あなたが達成しようとしているのと同じことをするために短いスクリプトをまとめました。ここに関連する部分があります。 Restart-Serviceコマンドの結果を待機している間にInvoke-CommandがWinRMサービスをリセットするため、最後にエラーが発生することに注意してください...

$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 }

これは、Posh v3を搭載したServer 2008 R2に対して実行されています。私はそれがServer 2012に対して機能すると思いますが、v2のためにいくつかの作業が必要な場合があります。

2
Ryan Fisher

通常、Set-WSManQuickConfig -UseSSLコマンドを使用して、WinRMサービスでSSL証明書を構成します。または、手動でSet-Itemを使用して、WinRMサービスのサムプリントを構成できます。例については、以下を参照してください。

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

[〜#〜] note [〜#〜]:最新バージョンのWindows Management Framework Core(PowerShellを含む)をデプロイしていることを確認してください。最近、Set-WSManQuickConfigコマンドレットが証明書ストア内の有効なSSL証明書を正しく識別しないという問題が発生しました。

2
Trevor Sullivan